[알고리즘] 다이나믹 프로그래밍 (Dynamic Programing)
* 다이나믹 프로그래밍 (동적 계획법) - 메모리를 적절히 사용하여 수행 시간 효율성을 비약적으로 향상시키는 방법 ** 이미 계산된 결과(작은 문제)는 별도의 메모리 영역에 저장하여 다시 계산하지 않도록 한다.** [다이나믹 프로그래밍의 조건] 1. 최적 부분 구조 (Optimal Substructure) : 큰 문제를 작은 문제로 나눌 수 있으며, 작은 문제의 답을 모아서 큰 문제를 해결 가능 2. 중복되는 부분 문제 (Overlapping Subproblem) : 동일한 작은 문제를 반복적으로 해결해야 한다. Ex. 피보나치 수열 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 , ... 점화식을 활용 -> a1 = 1 , a2 = 1 , an = a(n-1) + ..
2022. 11. 19.
[알고리즘] 정렬 알고리즘
* 정렬 알고리즘 - 데이터를 특정한 기준에 따라 순서대로 나열하는 것 [선택 정렬] : 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복 array = [7,5,9,0,3,1,6,2,4,8] for i in range(len(array)): min_index = i for j in range(i+1,len(array)): if array[min_index] > array[j]: min_index = j array[i] , array[min_index] = array[min_index] , array[i] print(array) - 매번 선형 탐색을 하는 것과 동일 -> 이중 반복문 활용! - 시간 복잡도 : O(N**2) [삽입 정렬] : 처리되지 않은 데..
2022. 11. 19.