최적 부분 구조 (Optimal Substructure)
→ 큰 문제를 작은 문제로 나눌 수 있으며 작은 문제의 답을 모아 큰 문제를 해결할 수 있음
중복되는 부분 문제 (Overlapping Subproblem)
→ 동일한 작은 문제를 반복적으로 해결해야 함