본문 바로가기
코딩/백준

백준 14916번 거스름돈 파이썬 코드 + 풀이

by 큰고양2 2023. 11. 9.

https://www.acmicpc.net/problem/14916

 

14916번: 거스름돈

첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다.

www.acmicpc.net

n = int(input())
f = n//5  #사용 가능한 5의 수
ans = -1 #출력값을 저장할 변수 
for i in range(f+1) : #5를 n개 사용했을때
    k = 5*i
    if (n-(k)) % 2 == 0 : # 남은 돈이 2로 나누어 진다면 개수를 갱신 *5가 커질수록 무조건 수가 적어짐
        ans = i+ (n-(k))//2
print(ans)

풀이는 간단하다

먼저 사용 가능한 5원의 개수를 확인하고 0개 부터 최대 개수까지 5를 넣으면서 2로 나누어 떨어지는 경우의

동전의 수를 갱신해서 저장하고 최종 값을 출력하면 된다

5의 개수를 따로 확인하는 이유는 문제의 예시인 13 처럼 그냥 5의 나머지로 하는 경우 10 , 3이 되어버려

분명 거스름돈을 줄 수 있는 액수임에도 -1을 출력하게 되기 때문이다