Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 5585번- '거스름돈' (PYTHON 풀이) 본문
문제:

1000을 기준으로 사용자가 입력한 값을 빼고 나머지 금액을 거스름돈 줄건데 이때 지급할 거스름돈 지폐의 개수를 구하면 된다. 단, 거스름돈은 항상 개수를 적게 주어야하므로 이를 참고해서 코드를 작성하면 된다.
풀이:
money = int(input())
cal = 1000 - money
count = 0
while cal > 0:
if cal >= 500:
count += 1
cal -= 500
elif cal >= 100:
count += 1
cal -= 100
elif cal >= 50:
count += 1
cal -= 50
elif cal >= 10:
count += 1
cal -= 10
elif cal >= 5:
count += 1
cal -= 5
else:
count += 1
cal -= 1
print(count)
처음엔 코드를 이렇게 작성했다. 1000에서 사용자 입력값을 빼서 계산할 거스름돈을 cal에 저장하고 각 지폐 금액보다 크다면 조건문에 걸려서 count를 1 더해주고 cal에서 해당하는 값을 빼서 나머지 잔돈을 계산한다. 그 다음 cal 보다 가장 차이가 적게 차이나는 큰 지폐를 또 구해서 이같은 로직을 반복하면 원하는 방향대로 문제를 풀 수 있다. 이렇게만 작성해도 문제는 풀 수 있다.
money = int(input())
cal = 1000 - money
count = 0
for i in [500,100,50,10,5,1]:
if cal >= i:
count = count + cal // i
cal = cal % i
print(count)
하지만 앞서 작성한 코드는 너무 긴 것 같아 조금 더 단축시킬 수 있는 방향도 고민해보았다.
지폐 단위들을 리스트에 저장한 다음 for문을 돌면서 각 리스트에 있는 지폐 단위와 직접 비교하고, cal 보다 가장 적게 차이나는 큰 지폐 단위와 나눠서 계산되는 몫을 count에 더해주고, 남은 cal을 계산하기 위해 남은 나머지로 cal을 초기화해서 또 반복 작업을 진행하면 마찬가지로 문제는 풀린다.
앞선 코드 보다는 좀 더 간단하게 작성 가능하다!
'CODING 💻' 카테고리의 다른 글
| 백준 1463번- '1로 만들기' (PYTHON 풀이) (0) | 2025.11.30 |
|---|---|
| 백준 7287번- '등록' (PYTHON 풀이) (0) | 2025.11.29 |
| 백준 2446번- '별 찍기 - 9' (PYTHON 풀이) (0) | 2025.11.27 |
| 백준 2748번- '피보나치 수 2' (PYTHON 풀이) (0) | 2025.11.26 |
| 백준 10845번- '큐' (PYTHON 풀이) (0) | 2025.11.25 |
