다이나믹 프로그래밍(Dynamic Programming)이란, 계산된 결과를 기록하고 재활용하여 문제의 답을 구하는 알고리즘입니다. 큰 문제를 부분 문제로 나눈 후 답을 찾아가는 과정에서 중간 계산 결과를 기록하기 위한 메모리를 필요로 합니다. 한 번 계산한 부분을 다시 계산하지 않아도 돼서 속도가 빠르다는 장점이 있습니다. 동적 계획법이라고도 불립니다. 다이나믹 프로그래밍에는 타뷸레이션(Tabulation)과 메모이제이션(Memoization) 두 가지 방법이 있습니다. 먼저 타뷸레이션은 하위 문제부터 풀면서 올라가는 상향식 접근 방법으로, 모두 계산하면서 차례대로 진행합니다. 반대로 메모이제이션은 큰 문제에서 하위 문제를 확인해가며 진행하는 하향식 접근 방법으로, 계산이 필요한 순간 계산하면서 진행합..