'분류 전체보기' 카테고리의 글 목록 (7 Page)
본문 바로가기
반응형

분류 전체보기147

[Python] 백준 1946번 이해하기 백준 1946번 신입사원 문제 이번 주는 GREEDY 알고리즘을 공부하고 있다. 모르더라도 문제 풀이를 읽으며 이해가 가능했는데 요 문제는 뭔가 문제 자체를 이해하기도 어려웠고 풀이하는 것도 어려웠다. (T_T) 그래서 혹시나 요 문제 이해가 잘 안되는 분들을 위해 풀이를 정리해보고자 한다. 백준 1946번 문제 풀이 문제 풀이 : 헷갈렸던 점은 바로 ! 입력되는 저 숫자들은 성적이 아니고 순위입니다. 이 문제를 풀며 다시 한번 문제를 제대로 잘 읽어야하는 중요성을 느꼈습니다. 그 다음 헷갈리는 것은 신입사원으로 뽑는 기준입니다. 기준은 한 지원자의 서류, 면접 성적이 다른 어떠한 지원자보다 최소 1개라도 높으면 채용이 됩니다. 즉, A의 서류순위, 면접 순위가 B 보다 둘 다 낮으면 A는 100% 떨어.. 2021. 7. 7.
[Python] 탐욕법, Greedy 알고리즘 GREEDY 알고리즘 Greedy 알고리즘이란 ? 현재 상황에서 지금 당장 최선인 것, 좋은 것만을 고르는 알고리즘이다. 또한 탐욕 법이라고도 불립니다. Greedy 알고리즘은 '정당성' 분석이 매우 중요합니다. - 단순히 가장 좋아보이는 것을 반복저긍로 선택해도 최적의 답을 구할 수 있는지 검토가 필요합니다. 일반적인 상황에서 Greedy 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많습니다. 왜냐하면 탐욕법은 당장의 좋은 것을 선택하기 때문입니다. 하지만 코딩테스트의 Greedy 문제는 대개 탐욕법으로 얻은 답(해)이 최적의 답이 되는 상황이 주어집니다. 그리디 알고리즘의 대표문제 : 그리디 알고리즘은 대표적으로 k 원의 돈을 건네야할 때 n개의 잔돈 가짓수(500원, 100원, 50원..) .. 2021. 7. 6.
[Python3] 최신버전 Reduce 사용법 lambda 표현법 Python .reduce() from functools import reduce Python3 이후, fuction ---> functools 로 변경되었습니다. 매서드 풀이 기본형 reduce(집계함수, 순회 가능한 데이터, 초기값) 기본적으로 위와 같습니다. 보통 누적 덧셈으로 reduce를 처음 접하고 이후 다양한 함수들을 연습해보면 좋습니다 ! 반환값 : 설정한 함수의 return 값 예제 1. 누적 덧셈 from functools import reduce arr = [1,2,3,4,5,6,7,8,9,10] SUM1 = reduce(lambda x,y : x+y, arr) SUM2 = reduce(lambda x,y : x+y, arr, 0) print(SUM1) print(SUM2) 풀이 : .. 2021. 7. 5.
[Flutter] 플러터란 ? React Native와의 차이, 장단점 Flutter 란 ? - 2017년 Google의 첫 런칭 - 편리한 모바일용 앱 개발을 목표 - ' Dart ' 라는 Google이 만든 언어를 사용 - IOS & 안드로이드를 모두 한 번에 개발할 수 있는 Cross-Platform 지원 - Cross-Platform 에서 native의 성능을 100% 구현할 수 없는 문제를 Dart 언어 완전히 바이너리를 씀으로서 해결함 특징 : React Native와 경쟁 중 / 최근 2.0 버전 출시 React Native, 리액트 네이티브란 ? - Javascript / React를 기반 - 역시나 ios / Android 개발이 가능 - Single page application에서 가장 많이 쓰이고 있음 React Navtive VS Flutter 의 차.. 2021. 7. 4.
[Python 파이썬] 해시 (Hash) 해싱 (Hashing) 알고리즘 예제로 알아보기 파이썬 코딩테스트에 출제 빈도가 높은 파이썬 '해시' 에 대해 알아보기 해시 / 해싱 / Hash / Hashing - 데이터를 빠르게 넣거나 or 가져올 때 사용하는 기법 : 해시로 풀어야하는 코딩 테스트의 경우 *** (아래 예제 有) -> 리스트로 풀게되면 효율성 테스트 실패 ! - 최솟값 or 최댓값을 찾을 때 (전체 자료를 모두 검색하는 경우) 효율이 떨어짐 - 파이썬의 딕셔너리가 해시 테이블로 구현되어 있음 해시관련 알고리즘을 접한 후에, 해시의 유용함에 대해 알게 되었습니다. 먼저 프로그래머스 level2 의 해시 대표문제 '전화번호 목록' 을 보겠습니다. 먼저 해시를 사용하지않은 코드, 그리고 해시를 사용한 코드의 실행 시간을 비교해 보겠습니다. 파이썬 실행시간 계산 / 측정 방법 http.. 2021. 7. 4.
[Python] 함수 실행 경과 시간 계산하기 time() time_process() 코딩테스트를 풀면서 문득 제가 실행하는 코드의 경과 시간이 궁금해졌습니다. 그래서 찾아본 함수 실행하면 시간이 얼마나 걸리는지 알려주는 time 매서드! 1. TIme.time() 1. 시간 계산하고 싶은 함수 준비 def Fn(x,y): print(x + y) Fn(1,2) 2. import time 그리고 시작하는 부분과 시간 계산을 끝내고 싶은 부분에 변수(아무 이름이나 ok) 를 담아 마지막에 print(end - start)를 해주면 됩니다. import time start = time.time() def Fn(x,y): print(x + y) Fn(1,2) end = time.time() print(end-start) * start - end 를 a , b로 바꿔보기 import time a .. 2021. 7. 4.
[Python] 소수 찾기 알고리즘 파이썬으로 소수 찾기 알고리즘 소수 찾기는 무언~가 어려운 느낌이 들어서 코딩테스트 연습할 때 항상 가장 마지막까지 남겨두곤 했다. 계속 이러면 더 못할테니 오늘 날잡고 아예 파헤쳐보자 !!! 👩‍💻 소수란 ? 1과 자기 자신만으로 나누어 딱 떨어지는 1보다 큰 양의 정수 ex) 2 -> 어떤 수로 2를 나누어 딱 떨어지는 수는 1,2 -> 2는 소수 ex) 4 -> 어떤 수로 4로 나누어 딱 떨어지는 수는 (= 4를 나눌 수 있는 수) 1,2,4 => 1,4 본인 자신을 제외하고 2도 있기 때문에 4는 소수가 아님 문제 : n 이 주어지고 1부터 n 까지의 소수의 개수를 구해보기 ex) n=10이라면 소수는 = [2,3,5,7] 4개가 나온다 ! 1. 완전 탐색 - 시간 복잡도 O(N) 이중 for문으.. 2021. 6. 30.
[CS] Data Structure, 자료 구조란 무엇일까? [ 업데이트 중입니다 💁‍♀️ ] 자료 구조란 ? 컴퓨터 과학에서 효율적인 접근 및 수정을 하도록 하는 자료의 조직, 관리, 저장을 의미한다. 더 정확히, 자료 구조는 데이터 값의 모임, 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다. 보통 추상 자료형의 선택으로 시작하는 자료구조는 잘 선택하면 효율적인 알고리즘이 가능하다. 효과적으로 설계된 자료구조는 실행 시간, 메모리 용량과 같은 자원을 최소한으로 사용하면서 연산을 수행한다. --- > 즉, 자료구조란 'DATA' 말 그대로 데이터(자료)의 집합을 말하며 해당 자료들이 나열되는 특정 규칙에 따라 여러 종류로 나눠진다. 그리고 자료 구조를 정확히 파악하고 잘 선택한다면 궁극적으로 모든 에너지를 절약할 수 있다 ! 자료구조의.. 2021. 6. 26.
[Python] 파이썬 함수 def / Function / global 키워드 / 람다표현식 함수를 쓰는 이유 : 똑같은 코드를 반복적으로 쓸 때 'function'을 만들어 놓고 필요할 때마다 씀으로써 효율적이고 코드의 길이도 줄일 수 있다. Python, 파이썬의 두 가지 함수 종류 1. 내장 함수 : 파이썬이 기본적으로 제공하는 함수 es) input(), print() 2. 사용자 정의 함수 : 개발자가 직접 정의하여 사용할 수 있는 함수 함수 용어 1. 매개변수 : 함수 내부에서 사용할 변수 2. 반환 값 : 함수에서 처리 된 결과를 반환 def 함수명 (매개변수) : 실행할 소스코드 return 반환값 def = define 매개변수와 반환값은 Optional 예제 파이썬의 Global 키워드 global 키워드로 변수를 지정하면 해당 함수에서는 지역 변수를 만들지 않고 함수 바깥에 .. 2021. 6. 25.
[프로그래머스] 모의고사 파이썬 python 모의고사 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution .. 2021. 6. 23.
[프로그래머스] python 2016년 2016년 문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 입출력 예 abresult 5 24 "TUE" 나의 코드 def solution(a, b): day = ['MON','TUE','WED','THU','FRI','SA.. 2021. 6. 22.
[프로그래머스] 파이썬 문자열 다루기 기본 python 문자열 다루기 기본 문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. 입출력 예 sreturn "a234" false "1234" true 실패 1 def solution(s): if len(s)==6 or len(s) ==4: if (s.isdigit() ==True) : return True else: return False 드디어 성공 ! def solution(s): if len(s)==6 or len(s) ==4: if (s.isdigit() ==True) : retur.. 2021. 6. 21.
[프로그래머스 ] 문자열 내 마음대로 정렬하기 / 파이썬 문자열 내 마음대로 정렬하기 문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 입출력 예 stringsnret.. 2021. 6. 21.
[프로그래머스] 시저 암호 파이썬 python 시저 암호 문제 설명 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. 제한 조건 공백은 아무리 밀어도 공백입니다. s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다. s의 길이는 8000이하입니다. n은 1 이상, 25이하인 자연수입니다. 입출력 예 snresult "AB" 1 "BC" "z" 1 "a" "a B z" 4 "e F d" 파이썬 나의 코드 : def solution(s, n): a = 'abcde.. 2021. 6. 20.
[프로그래머스 ] 콜라츠 추측/ while, 재귀함수 파이썬 콜라츠 추측 문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. 제한 사항 입력된 수, num은 1 이상 8000000 미만인 정수입니다.. 2021. 6. 20.
반응형