동적 프로그래밍이라는 이름은 만든 사람이 그냥 멋있어서 지은 프로그램이라고 한다. 별 이유가 다있네..
가. 조건(DP로 해결할 수 있는지 판단 방법)
이 방법론을 쓰기 전에 문제가 어떤 상황인지, 즉 조건을 따져봐야한다. 조건은 다음과 같다.
1. 전에 구한 값을 저장할 필요가 있는가?
2. 전에 구한 값이 최선이라서 현재 구하고자 하는 값에도 참고할 수 있는가?
3. 혹은 점화식으로 표현이 가능한가?
위의 두가지 경우를 모두 만족한다면 독자는 비로소 동적계획법을 적용시킬 수 있다!
나. 방법
1. (⭐️ 중요) 처음 순서대로 직접 구해보고
2. 이전 값을 참고하여 현재 값을 구할 수 있을 때를 찾아보자.
즉, 현재 값이 이전 값을 참고하고 있나를 찾아야한다.