거스름돈으로 동전 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다. 손님에게 거슬러 줘야할 돈이 N원일 때 거슬러줘야 할 동전의 최소 개수를 구하라. 단, 거슬러줘야 할 돈 N은 항상 10의 배수이다.
화폐의 종류가 K개라고 할 때 위 소스 코드의 복잡도는 O(K)이다.
이 알고리즘의 복잡도는 동전의 총 종류에만 영향을 받고, 거슬러 줘야 할 금액의 크기와는 무관하다.
그리디 알고리즘으로 문제의 해법을 찾았을 때는 그 해법이 정당한지 검토해야 한다. 거스름돈 문제를 그리디 알고리즘으로 해결할 수 있는 이유는 가지고 있는 동전 중에서 가장 큰 단위가 항상 작은 단위의 배수이므로 작은 단위의 동전들을 종합해 다른 해가 나올 수 없기 때문이다.
예) [BOJ] 설탕 배달 : https://www.acmicpc.net/problem/2839
대부분의 그리디 알고리즘 문제에서는 문제 풀이를 위한 최소한의 아이디어를 떠올리고 이것이 정당한지 검토할 수 있어야 답을 도출할 수 있다.