overlapping-subproblemsoptimal-substructurememoization

Dynamic Programming을 설명해 주세요

예상 시간
7
30초 답변

꼬리질문

조금 더 깊게 물어본다면

답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.

DP 상태 정의가 중요한 이유는?

부가 설명

피보나치 수를 재귀로 그대로 풀면 같은 값을 계속 다시 계산합니다. f(5)를 구할 때 f(3)이 여러 번 등장하는 식입니다. DP는 이런 반복을 발견하고, 한 번 구한 결과를 저장해 다음 계산에서 재사용합니다.

하지만 모든 최적화 문제가 DP가 되는 것은 아닙니다. 큰 문제의 답이 작은 문제의 답으로 구성되는 optimal substructure가 있어야 하고, 같은 상태가 여러 번 등장해야 이득이 있습니다. DP의 핵심은 배열 자체가 아니라 상태가 무엇을 의미하고, 이전 상태에서 현재 상태로 어떻게 넘어오는지입니다.

한 줄 정리

DP는 반복되는 부분 문제를 상태로 저장해 같은 계산을 다시 하지 않는 방법입니다.