거스름돈 최소 동전 계산기 (그리디·동적계획법)
금액과 동전 종류를 넣으면 큰 것부터 집는 그리디와 동적계획법의 답을 나란히 내고, 그리디가 최적이 아닌 경우를 직접 보여 줍니다. 만드는 방법의 수와 만들 수 없는 금액도 판정합니다.
공백이나 쉼표로 나눠 넣습니다. 12가지까지 다룹니다.
최소 동전 개수
14개
큰 것부터 집는 그리디도 같은 14개를 씁니다.
① 그리디 — 큰 것부터 집는다
| 동전 | 개수 | 소계 | 남은 금액 |
|---|---|---|---|
| 500원 | 9개 | 4,500 | 230 |
| 100원 | 2개 | 200 | 30 |
| 10원 | 3개 | 30 | 0 |
② 동적계획법 — dp[x] = min(dp[x−동전] + 1)
| 동전 | 개수 | 소계 | 남은 금액 |
|---|---|---|---|
| 500원 | 9개 | 4,500 | 230 |
| 100원 | 2개 | 200 | 30 |
| 10원 | 3개 | 30 | 0 |
0원부터 차례로 「이 금액을 만드는 최소 개수」를 채워 올라갑니다. 각 칸은 동전 하나를 빼고 남은 금액의 답에 1을 더한 것 가운데 가장 작은 값이므로, 앞칸이 모두 최적이면 이 칸도 최적입니다. 그리디처럼 앞만 보지 않아 언제나 맞습니다.
계산 방법
- 1거슬러 줄 금액을 넣습니다.
- 2동전 종류를 공백이나 쉼표로 나눠 넣습니다. 예제 버튼으로 한국 화폐를 바로 넣을 수도 있습니다.
- 3그리디 표와 동적계획법 표를 견주어 개수가 같은지 확인합니다.
- 4그리디가 최적이 아닌 예제(1·4·6원으로 8원)를 눌러 「큰 것부터」가 늘 옳지 않다는 것을 확인합니다.
자주 묻는 질문
동전 구성에 따라 다릅니다. 한국 화폐(10·50·100·500원과 지폐)에서는 큰 것부터 주는 것이 언제나 최적이지만, 이는 이 구성이 「정규(canonical)」이기 때문이지 그리디가 원래 옳아서가 아닙니다. 예를 들어 1·4·6원짜리만 있을 때 8원을 거슬러 주면 그리디는 6+1+1로 3개를 쓰지만 4+4로 2개면 됩니다.
0원부터 차례로 「그 금액을 만드는 최소 동전 개수」를 채워 올라갑니다. 금액 x의 답은 동전 c를 하나 뺀 dp[x−c]에 1을 더한 값들 가운데 가장 작은 것입니다. 앞칸이 모두 최적이면 이 칸도 최적이므로 그리디처럼 앞만 보고 후회하는 일이 없습니다. 계산량은 금액 × 동전 종류 수에 비례합니다.
있습니다. 5원과 6원짜리만으로 10원을 만들 때 그리디는 6원을 먼저 집어 4원이 남아 실패하지만, 5+5로는 만들 수 있습니다. 큰 것부터 집으면 나중에 쓸 수 없는 자투리가 남을 수 있기 때문입니다. 물론 3원과 5원으로 7원처럼 어느 방법으로도 못 만드는 금액도 있습니다.
거스름돈에서 2+1과 1+2는 같은 조합이기 때문입니다. 순서를 따로 세면 1·2·5원으로 5원을 만드는 방법이 9가지가 되지만, 조합으로 세면 4가지입니다. 계산할 때 바깥 반복을 동전으로 두면 조합이, 금액으로 두면 순서를 따지는 수가 나옵니다. 이 계산기는 둘 다 보여 줍니다.
이 계산기가 400원까지 모든 금액을 훑어 그리디와 최적이 어긋나는 가장 작은 금액을 찾아 알려 줍니다. 어긋나는 금액이 없으면 그 구성은 적어도 그 범위에서 안전합니다. 정확한 판정은 파스칼-그로스의 정리로 동전 두 개씩만 봐도 되지만, 화면에서는 실제 반례 금액을 보여 주는 편이 뜻이 분명합니다.
전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- 검증은 교과서가 그리디의 반례로 드는 자료(1·4·6원으로 8원 → 그리디 3개, 최적 2개 / 1·3·4원으로 6원 → 3개, 2개)와 한국 동전 4,730원(500×9 + 100×2 + 10×3 = 14개), 1·2·5원으로 5원을 만드는 방법 4가지로 했습니다.
- 무작위 동전 구성 2,000벌에서 그리디가 동적계획법보다 적은 개수를 낼 수 없다는 것과, 동적계획법이 고른 동전의 합이 언제나 금액과 맞는지도 대조했습니다.
- 한국 화폐는 1원·5원 동전이 유통되지 않아 10원 단위가 아닌 금액은 만들 수 없습니다. 실제 거래에서는 현금영수증·카드 결제가 아니면 10원 미만을 반올림합니다.
- 금액은 100,000까지, 동전은 12가지까지 다룹니다. 만드는 방법의 수는 10,000 이하에서만 셉니다 — 그 위로는 계산이 눈에 띄게 느려집니다.
- 방법의 수는 자릿수가 커질 수 있어 BigInt로 셉니다. 배정밀도 실수로 세면 큰 금액에서 끝자리가 조용히 틀립니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.