Python으로 알고리즘 공부 06. 소수 (Prime number) 소수판별1. 에라토스테네스의 체고대 그리스 수학자 에라토스테네스가 발견한 소수 찾는 방법.N보다 작은 소수들을 찾으려면, 2보다 크거나 같고 보다 작은 소수의 배수들만 지우면 된다.예를 들어, 120보다 작은 소수들을 모두 찾고 싶다면, 이므로 2, 3, 5, 7의 배수만 지우면 남은 수는 모두 소수가 된다.작은 수의 소수를 판별하는 데 유용하다. def is_prime(num): if num 아카이빙 2017.07.05
Python으로 알고리즘 공부 05. 퀵 셀렉션 (Quick Selection) 퀵 셀렉션 (Quick Selection) 파이썬으로 구현퀵 셀렉션은 리스트를 정렬하지 않고 K번째로 큰 수를 알고 싶을 때 쓰는 방법이다.전체적인 솔루션은 퀵 정렬과 매우 유사하다, 피벗을 하나 골라서 값을 비교하면서, 피벗보다 작은 리스트, 피벗 보다 큰 리스트로 나눈다.k번째 숫자가 속해있는 리스트만 가지고 다시 재귀적으로 반복한다.median 값을 찾을 때도 활용 가능.평균 시간복잡도는 O(n) def quick_selection(arr, kth): pivot = arr[(len(arr)+1)//2 - 1] left, mid, right = [], [], [] for i in range(len(arr)): if arr[i] pivot: right.append(arr[i]) else: mid.app.. 아카이빙 2017.07.05
Python으로 알고리즘 공부 04. 이진 검색 (Binary Search) 이진 검색 (Binary Search) 파이썬으로 구현Binary Search 는 오름차순으로 정렬된 리스트에서 특정값의 위치를 찾는 알고리즘처음 중간의 임의 값을 선택하여, 그 값의 크고 작음을 비교시간복잡도는 O (log N) 이다. def binary_search(arr, value): low = 0 high = len(arr)-1 while (low value: high = mid - 1 elif arr[mid] 아카이빙 2017.07.05