다이나믹 프로그래밍 Dynamic programming, 동적 계획법 조건) 1. 큰 문제를 작은 문제로 나눌 수 있음 2. 작은 문제에서 구한 정답은 그걸 포함하는 큰 문제에서도 동일 -> 큰 문제를 작게 나눠서 같은 문제는 한 번씩만 풀어서 문제를 효율적으로 해결하는 알고리즘 메모이제이션 Memoization 한 번 구한 결과를 메모리 공간에 메모해두고 같은 식을 다시 호출하면 메모한 결과를 그대로 가져옴 탑다운 방식 Top-down 재귀 함수를 이용해서 다이내믹 프로그래밍 소스코드를 작성하는 방법 바텀업 방식 Bottom-up 반복문을 이용해서 소스코드를 작성하는 방식