면접 단골 질문입니다. "정렬 기법 중에 가장 빠른 정렬기법은 무엇인가요?" 누군가는 Quick Sort라고 말할 것이고, 누군가는 Merge Sort라고 말할 것입니다. (혹은 계수 정렬, 기수 정렬이라고 답할지도..?) 정렬 기법마다 장단점이 있으며, 최고의 경우와 최악의 경우가 존재합니다. 본 글에서는 O(nlogN) 을 보장하는 가장 대표적이고 자주 사용되는 정렬 기법인 Merge Sort와 Quick Sort 를 Python으로 구현해보고 두 정렬 기법의 장단점을 확인해보도록 하겠습니다. Merge Sort Merge Sort(합병 정렬)은 Divide & Conquer 기법을 사용하여 정렬하는 대표적인 정렬 기법이라고 할 수 있습니다. divide의 merge_sort와 conquer의 mer..
입출력 입력받은 문자열을 띄어쓰기로 구분해 정수형으로 저장 list(map(int, input().split()) 빠르게 입력받기 import sys sys.stdin.readline().rstrip() rstrip()? readline()시 줄바꿈 기호로 입력된 공백문자 제거하기 위해 ord() : char → int print(ord('a')) #97 print(chr(ord('a'))) #a import random random() : 0.0과 1.0사이 난수 print(random.random()) randrange(start, stop, step) import random for i in range(5) : print(random.randrange(1, 9, 2)) ..
내장함수 #리스트의 원소 합 result = sum([1,2,3,4,5]) #리스트의 최소값 result = min([1,2,3,4,5]) #리스트의 최대값 result = max([1,2,3,4,5]) #문자열 수식 계산 result = eval("(3+5)*7") itertools permutations : r개의 데이터를 뽑아서 일렬로 나열하는 모든 경우 combinations : r개의 데이터를 뽑아서 순서 상관없이 나열하는 모든 경우 product : r개의 데이터를 뽑아서 일렬로 나열하는데 중복 허용 combinations_with_replacement : r개의 데이터를 뽑아서 순서 상관없이 나열하는데 중복 허용 from itertools import permutations, combinat..
기본 문법 전역변수 a=0 def func(): global a a+=1 자료형 실수형 지수 표현방식 제공 → 최단경로 문제에서 가능한 최대값이 10억미만일때 자주 사용 a = 1e9 #10^9표현 산술연산자 나누기 #나머지 구하기 x = 10 % 3 #몫 구하기 y = 10 // 3 #나누기 -> 실수로 반환 z = 7 / 3 거듭제곱 x = 2**3 문자열 문자열 반복 hi = '안녕'*5 문자열 포매팅 % 이용 height = 172.5 a = '키는 %.2f입니다.' % height print(a) str.format 이용 → 자료형 몰라도 가능 test = 'Hello {}'.format('Bob') print(test) 자릿수 맞추기 y..