입력 크기가 작은 부분 문제들을 해결한 후, 해당 부분 문제를 활용하여 보다 큰 크기의 부분 문제를 해결하고, 최종적으로 전체 문제를 해결하는 알고리즘.
- 상향식 접근법 — 가장 최하위 해답을 구한 후 이를 저장하고, 해당 결과값을 이용하여 상위 문제를 풀어감
- Memoization — 이전에 실행했던 값을 저장하여 다음 계산에 사용
점화식: F(n) = F(n-1) + F(n-2)
수열: [1, 1, 2, 3, 5, 8, 13, 21, 34, …]
두 인접한 데이터를 비교하여, 큰 값을 뒤로 바꾸는 정렬 알고리즘.

- n개의 리스트가 있을 경우 n-1번의 로직이 필요
- 로직을 1회 적용할 때마다 가장 큰 수가 뒤에서부터 1개씩 정렬
- 이미 정렬된 경우 일찍 종료 가능
재귀용법을 활용한 정렬 알고리즘.
- 리스트를 절반으로 자른다
- 재귀적으로 하나가 될 때까지 나눈다
- 나누어진 리스트를 재귀적으로 합병 정렬한다

두 번째 인덱스부터 시작하여 작은 값을 앞으로 보내는 알고리즘. 해당 값보다 작은 값을 만날 때까지 이동한다.

주어진 데이터에서 최소값을 찾은 후 그 값을 해당 인덱스와 스왑. 0번부터 차례대로 최소값이 정해지는 방식.

탐색할 자료를 나누어 해당 데이터가 있을 만한 곳을 탐색하는 방법. 둘(binary)로 해석하기보다 양자택일로 해석하는 것이 이해하기 쉽다.
- 정렬된 상태에서만 사용 가능
- 리스트의 중간을 선택하여 탐색 값을 비교, 크고 작음에 따라 좌우 선택
- 재귀를 사용하여 1개가 남을 때까지 반복