-
파이썬의 정렬 라이브러리Algorithms in Python/notes 2021. 1. 20. 15:37
파이썬의 정렬 라이브러리 sort() 기본 정렬 라이브러리 sort() 함수를 제공한다. sort() : 병합정렬 기반으로, 퀵 정렬보단 느리지만 O(nlogn)을 보장한다. list.sort() : 리스트 내에서 정렬한다. (여기서 list는 직접 수정이 가능하다.) sorted(list) : 새로운 정렬 리스트를 생성한다. (여기서 list는 튜플, 딕셔너리, 문자열 등이다.) reverse 리스트 뒤집기 # 내림차순 arr.sort(reverse=True) *sorted(arr, reverse=True) key, lambda s = ['가', '나다', '라', '마바아자', '차카파'] s.sort(key=len) # len에 따라 정렬 print(*sorted(arr, key=lambda x:(..
-
정렬Algorithms in Python/notes 2021. 1. 20. 14:51
정렬 (Sorting) 데이터를 특정한 기준에 따라 순서대로 나열하는 것을 말한다. 선택 정렬(Selection Sort) 정렬된 왼쪽 리스트와 정렬 안된 오른쪽 리스트를 가정하고, 오른쪽 리스트에서 최소값을 선택하여 오른쪽 리스트의 첫번째 수와 교환한다. • 선택 정렬의 소스코드 arr = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] for i in range(len(arr)): min_index = i # 가장 작은 원소의 인덱스 for j in range(i + 1, len(arr)): if arr[min_index] > arr[j]: min_index = j arr[i], arr[min_index] = arr[min_index], arr[i] # 교환 print(arr) • 선택 정렬의..
-
다이나믹 프로그래밍Algorithms in Python/notes 2021. 1. 13. 12:27
다이나믹 프로그래밍 (Dynamic Programming) 어떤 문제를 공간을 더 사용하며 연산속도를 증가시키는 방법이다. 큰 문제를 작게 나누고, 같은 문제라면 한 번씩만 풀어 문제를 효율적으로 해결하는 것이다. 다이나믹 프로그래밍의 조건 1. 최적 부분 구조 • 큰 문제를 작은 문제로 나눌 수 있으며 작은 문제의 답을 모아서 큰 문제를 해결할 수 있다. 2. 중복되는 부분 문제 • 동일한 작은 문제를 반복적으로 해결해야 한다 * 뒤로 돌릴 수 없을 때, 특정한 상태가 있을 때, 최적해를 구해야할 때 대표적 예시 : 피보나치 수열 an= an-1 + an-2, a1 = 1, a2 = 1 피보나치 수열을 재귀함수로 구현하면 다음과 같다. def fibo(x): if x == 1 or x == 2: ret..