Lesson DP란 무엇인가 큰 문제를 겹치는 작은 상태로 나누는 사고
핵심 생각
동적 계획법은 같은 부분 문제의 답을 한 번만 계산해 재사용하는 방법이다. 재귀를 썼다는 사실만으로 DP가 되는 것은 아니다. 서로 다른 선택 경로가 같은 상태에 도착하고, 그 상태 이후의 답이 과거 경로와 무관할 때 재사용할 수 있다.
문제를 읽으며 적을 세 문장
dp[state]가 정확히 무엇을 뜻하는가?- 현재 상태로 오는 마지막 행동은 무엇인가?
- 더 작은 상태의 답으로 현재 답을 만들 수 있는가?
예를 들어 계단 i에 도착하는 마지막 행동이 1칸 또는 2칸 이동이라면, ways[i] = ways[i-1] + ways[i-2]가 자연스럽게 나온다. 이때 점화식보다 먼저 “ways[i]는 i번째 계단에 정확히 도착하는 방법 수”라고 정의해야 한다.
자주 하는 실수: 입력의 위치와 DP 상태를 같은 것으로 생각하거나, 서로 다른 조건의 상태를 하나로 합쳐 미래 전이가 달라지는 경우를 놓친다.