DHistory

[Baekjoon] DP - 14916 거스름돈 본문

Computer Science/Algorithm

[Baekjoon] DP - 14916 거스름돈

ddu0422 2023. 9. 11. 14:59

문제

 

14916번: 거스름돈

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

www.acmicpc.net

 

풀이

"""
d[n]: 돈이 n원일 때 2원 짜리와 5원 짜리로 줄 수 있는 동전의 최소 개수
"""
n = int(input())
INF = 987654321


def solution(n):
    if n == 1:
        return - 1
    
    d = [INF] * (n + 1)
    d[2] = 1
    
    for i in range(4, n + 1):
        if not i % 2:
            d[i] = min(d[i], i // 2)

        if not i % 5:
            d[i] = min(d[i], i // 5)

        d[i] = min(d[i], min(d[i - 2] + 1, d[i - 5] + 1))


    return d[n] if d[n] != INF else -1 


print(solution(n))

 

채점 결과