프로그래머스보다 백준이 알고리즘에 따른 문제 분류가 잘 되어 있는 것 같아서 제일 낮은 등급부터 알고리즘 문제를 풀어보도록 하자...
coins
를 500, 100, 50, 10, 5, 1
의 리스트로 정의. 이미 내림차순 정렬이므로 따로 정렬해줄 필요가 없다.money = 1000 - int(input()) # 잔돈
coins = [500, 100, 50, 10, 5, 1] # 거스름돈 리스트
cnt = 0 # 잔돈의 개수 초기화
for coin in coins:
cnt += money // coin # 잔돈의 개수
money %= coin # 남은 돈
print(cnt)
BOJ 5585번
문제가 그리디알고리즘 문제인 이유는 가장 적은 개수의 거스름돈을 반환
하는 문제인데, 이를 구하기 위한 최소한의 아이디어는 거스름돈의 단위가 가장 큰 돈을 먼저 거스름돈으로 계산해서 주는 것이다.가장 큰 순서대로
, 가장 작은 순서대로
와 같은 기준을 제시해준다.