풀이


학교 알고리즘 문제풀이 동아리에서 실시한 과제이다.

예전에 풀어봤었지만 다시 한 번 풀어본다는 마인드로 새롭게 다가갔다.

확실히 초창기에 썼던 코드보다 많이 간결해졌다는 것을 느낄 수 있었다.

하지만 진짜 고수들은 더 좋은 방법을 알고만 있을 것 같다. 그 깨달음을 얻고싶다.

전형적인 그리디문제이다.

거스름돈 단위에 따라 최소한의 동전을 거슬러주는 프로그램을 작성하면된다.

단, 모든 거스름돈 단위가 큰수들이 작은수들의 배수여야만 가능한 알고리즘이다.

이 문제에서 주어진 [25, 10, 5, 1] 들은 모두 조건에 부합하기에 정상작동한다.

소스코드


import sys
input = sys.stdin.readline
 
t = int(input())
coin = [25, 10, 5, 1]
 
for _ in range(t):
    ans = []
    change = int(input())
    for c in coin:
        ans.append(change//c)
        change %= c
    print(*ans)

References