출처 : https://www.acmicpc.net/problem/5585
5585번: 거스름돈
타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사
www.acmicpc.net

그리디 알고리즘으로 풀었다.
가장 큰돈부터 확인하는 그리디적인 접근을 하기 위해 동전의 값이 큰 것부터 리스트에 넣고 돌렸다.
# BOJ5585 거스름돈
N = int(input())
change = 1000 - N # 거스름 돈
ans = 0
# 500, 100, 50, 10, 5, 1 중 거스름 돈 갯수 가장 적게
coins = [500, 100, 50, 10, 5, 1]
for coin in coins:
if coin <= change:
ans += change // coin # 동전의 갯수
change = change % coin # 남은 금액
if change == 0: # 종료 조건
break
print(ans)
모든 돈을 다 거슬러주고 남은 돈이 0원이면 for문을 끝까지 돌 지 않고 중간에 종료해줬다.
'알고리즘 > BOJ' 카테고리의 다른 글
| [BOJ / 백준] 2577번 숫자의 개수 python / 파이썬 (0) | 2022.05.20 |
|---|---|
| [BOJ / 백준] 1427번 소트인사이드 python / 파이썬 (0) | 2022.05.19 |
| [BOJ / 백준] 11021번 A+B - 7 파이썬 / python f-string 문자열 포매팅 (0) | 2022.05.17 |
| [BOJ / 백준] 1712번 손익분기점 파이썬 / python (0) | 2022.05.16 |
| [BOJ / 백준] 14681번 사분면 고르기 python / 파이썬 (0) | 2022.05.14 |
댓글