동전 교환 문제는 동적 계획법의 기초 예제로 자주 소개된다. 문제는 다음과 같다.
- 거스름돈 C원을 액면이 P1,P2,…,PN인 동전으로 바꿀 때, 최소 몇 개의 동전이 필요한가?
병찬이는 이 문제를 단순한 방법으로 풀려고 한다. 병찬이의 방법은 다음과 같다.
- 매 순간 아직 남은 금액 이하의 액면 중 가장 큰 동전을 하나 더한다. 남은 금액이 0이 될 때까지 이 과정을 반복한다.
하지만 병찬이의 방법이 최적이 아닌 경우가 있다. 8원을 액면이 1, 4, 6인 동전으로 바꾸면 병찬이는 6원짜리 1개와 1원짜리 2개, 모두 3개를 쓴다. 4원짜리 2개로 바꾸면 2개로 충분하다.
병찬이는 자신의 방법이 어떤 액면 구성에서는 통하고 어떤 구성에서는 통하지 않는다는 것을 알게 되었다. 동전의 액면이 주어질 때, 병찬이의 방법이 모든 C에 대해 최소 개수를 만들어 내는지 판정하는 프로그램을 작성하여라.