문제를 해결하는 최적의 답(optimal solution)을 찾아야 하는 문제
최적해는 하나 이상일 수 있다
maximum 또는 minimum [value] 를 가지는 {solution} 을 찾는 문제들이 주를 이룬다
최적화 문제를 해결하는 전략 중 하나
subproblem(s)의 optimal solution(s)을 활용해서, problem의 optimal solution을 찾는 방식
겹치는(overlapping) subproblems 은 1번만 계산하고, 그 결과를 저장한 뒤, 재사용한다
recursive
memoization (function call 의 결과를 저장하는 것)
subproblems의 일부만 계산해도 최종 optimal solution을 구할 수 있을 때
iterative
tabulation (subproblem의 결과부터 테이블에 차근차근 채워넣는 것)
모든 subproblems을 계산해야 최종 optimal solution을 구할 수 있을 때
(4.) 지금까지 계산된 정보를 바탕으로 최적해를 구한다