"""
입출력 예시)
(예제 입력 1)
13 -> 5
(예제 입력 2)
14 -> 4
"""
## 의사코드 ##
# 잔돈은 5원과 2원으로만
# for c in [5, 2]:
# n = change // c # 필요한 동전의 개수
# # 남은 거스름돈이 없으면 잔돈 개수 + n 하고 중지
# if change - (c*n) == 0:
# cnt += n
# break
# # 남은 거스름돈이 홀수이면 동전 개수 - 1
# elif change - (c*n) % 2 != 0:
# n -= 1
# cnt += n
# # 짝수로 나눠 떨어지면 잔돈 개수 + n
# else:
# cnt += n
# change -= c * n # 남은 거스름돈 계산
첫 번째 시도
# 거스름돈
change = int(input())
# 잔돈 개수
cnt = 0
for c in [5, 2]:
n = change // c # 필요한 동전의 개수
# 남은 거스름돈이 없으면 잔돈 개수 + n 하고 중지
if change - (c*n) == 0:
cnt += n
break
# 남은 거스름돈이 홀수이면 동전 개수 - 1
elif change - (c*n) % 2 != 0:
n -= 1
cnt += n
# 짝수로 나눠 떨어지면 잔돈 개수 + n
else:
cnt += n
change -= c * n # 남은 거스름돈 계산
print(cnt)
-> 틀림 (거슬러 줄 수 없으면 -1 출력해야하는 것 깜빡함)
통과한 코드
# 거스름돈
change = int(input())
# 잔돈 개수
cnt = 0
while True:
# 거스름돈이 5로 나누어 떨어지면 잔돈 개수는 거스름돈을 5로 나눈 수
if change % 5 == 0:
cnt += change // 5
break
# 5로 나누어 떨어지지 않으면 거스름돈에서 2씩 차감하면서 잔돈 개수 + 1
else:
change -= 2
cnt += 1
# 거스름돈이 음수가 되면 중지
if change < 0:
break
# 거슬러 줄 수 없으면 -1
if change < 0:
print(-1)
# 거슬러 줄 수 있으면 잔돈 개수 출력
else:
print(cnt)
-> for문으로 5원과 2원을 돌지 않고 5로 나누어 떨어지지 않으면 2원씩 차감하면서 계산