작은 문제의 답을 표에 쌓아 큰 문제를 풉니다. "dp[i]가 무엇인지" 상태 정의 한 문장이 풀이의 전부 — 최상급 단골 유형입니다.
계단을 오르면서 칸마다 포스트잇을 붙인다고 생각해 봅니다. 포스트잇에는 "여기까지 올라오는 방법이 몇 가지인지"를 적어 둡니다. 5번 칸에 도착했을 때 처음부터 다시 세지 않습니다. 5번 칸에 올 수 있는 곳은 3번 칸과 4번 칸뿐이니, 두 칸에 붙은 포스트잇의 숫자를 더해서 적으면 끝입니다.
핵심은 같은 계산을 두 번 하지 않는다는 점입니다. 포스트잇이 없으면 3번 칸의 답을 5번에서 한 번, 4번에서 또 한 번 계산하게 되고, 계단이 길어질수록 이 중복이 눈덩이처럼 불어납니다.
DP는 작은 문제의 답을 한 번만 구해 적어 두고, 큰 문제는 적어 둔 답을 조립해서 푸는 기법입니다.