다이나믹 프로그래밍 Dynamic Programming, DP복잡한 문제를 더 작은 하위 문제로 나누어 해결하는 알고리즘 설계 기법 큰 문제를 작은 문제로 쪼개서 그 답을 저장해두고 재활용한다, '기억하며 풀기' 1. 알고리즘 기법문제를 해결하기 위해 사용되는 절차적인 방법 또는 계획2. 알고리즘 설계 기법문제 해결을 위해 알고리즘을 설계하는 방법이나 접근 방식 다이나믹 프로그래밍 사용 조건Overlapping Subproblems 겹치는 부분 문제DP 는 기본적으로 문제를 나누고 그 문제의 결과 값을 재활용해서 전체 답을 구하기 때문에동일한 작은 문제들이 반복하여 나타나는 경우에 사용이 가능하다 Optimal Substructure 최적 부분 구조 부분 문제의 최적 결과 값을 사용해 전체 문제의 최적 ..