IT/ps

백준 14916번 거스름돈

u149_cinderella 2025. 3. 7. 18:19

 

못거슬러주는 경우도 고려해야해서 좀 복잡해진다.

 

import sys

n=int(sys.stdin.readline().rstrip())
v=[0]*(n+1)
if n>=2:
    v[2]=1
if n>=4:
    v[4]=2
if n>=5:
    v[5]=1
for i in range(6,n+1):
    two=v[i-2]+1
    if v[i-2]==0:
        two=0
    five=v[i-5]+1
    if v[i-5]==0:
        five=0
    v[i]=min(two,five)
    if two==0 or five==0:
        v[i]=max(two,five)
if v[n]==0:
    print(-1)
else:
    print(v[n])

 

근데 9 이후로는 거슬러주는게 불가능한 케이스가 없어서 굳이 five,two변수 사용하지않고 깔끔하게 푸는게 가능할듯하다.

물론 나는 엣지 케이스 신경쓰느라 다시풀라해도 이렇게 풀겠지만.