백준 5585 - 거스름돈 (Python3)
코드
n = int(input())
# 동전 종류
coin = [500, 100, 50, 10, 5, 1]
# 구현 기능
def solution(n, coin):
# 받을 거스름돈
change = 1000 - n
# 거스름돈으로 받은 잔돈의 개수
cnt = 0
# 잔돈 종류별로 반복
for c in coin:
# 남은 돈이 현재 잔돈보다 작아질 때까지 반복
while change >= c:
# 거스름돈에 현재 잔돈 금액만큼 빼줌
change -= c
# 잔돈을 한 번 계산했으므로 cnt + 1
cnt += 1
print(cnt)
solution(n, coin)
문제 해설
대표적인 그리디 알고리즘 문제.
동전의 종류가 서로 약수 관계이고, 내림차순 정렬돼있으므로 큰 동전부터 하나씩 거스름돈에 금액에 맞게 감소시키면서 감소시킬 때 마다 1개씩 숫자를 세어주면 정답을 구할 수 있다.
댓글남기기