도구스학업·수학

거스름돈 최소 동전 계산기 (그리디·동적계획법)

금액과 동전 종류를 넣으면 큰 것부터 집는 그리디와 동적계획법의 답을 나란히 내고, 그리디가 최적이 아닌 경우를 직접 보여 줍니다. 만드는 방법의 수와 만들 수 없는 금액도 판정합니다.

4,730원

공백이나 쉼표로 나눠 넣습니다. 12가지까지 다룹니다.

최소 동전 개수

14개

큰 것부터 집는 그리디도 같은 14개를 씁니다.

금액4,730원
동전 종류500 · 100 · 50 · 10
그리디 (큰 것부터)14개
동적계획법 (최적)14개
만드는 방법의 수 (순서 무시)8565가지
이 동전 구성에서는 400까지 어떤 금액을 넣어도 그리디가 최적입니다. 한국 화폐가 이 성질을 갖도록 짜여 있어 계산대에서 큰 돈부터 세어 주어도 손해가 없습니다.

① 그리디 — 큰 것부터 집는다

동전개수소계남은 금액
50094,500230
100220030
103300

② 동적계획법 — dp[x] = min(dp[x−동전] + 1)

동전개수소계남은 금액
50094,500230
100220030
103300

0원부터 차례로 「이 금액을 만드는 최소 개수」를 채워 올라갑니다. 각 칸은 동전 하나를 빼고 남은 금액의 답에 1을 더한 것 가운데 가장 작은 값이므로, 앞칸이 모두 최적이면 이 칸도 최적입니다. 그리디처럼 앞만 보지 않아 언제나 맞습니다.

계산 방법

  1. 1거슬러 줄 금액을 넣습니다.
  2. 2동전 종류를 공백이나 쉼표로 나눠 넣습니다. 예제 버튼으로 한국 화폐를 바로 넣을 수도 있습니다.
  3. 3그리디 표와 동적계획법 표를 견주어 개수가 같은지 확인합니다.
  4. 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일 · 결과는 참고용 추정치입니다.