본문 바로가기
알고리즘/BOJ

[Python] 백준 1398: 동전문제

by PIAI 2021. 9. 27.

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

 

1398번: 동전 문제

김형택이 세운 나라의 화폐 체계는 단순하다. 이곳은 동전만 사용하고, 동전은 다음과 같이 다른 값을 가진다. 1, 10, 25, 100, 1000, 2500, 10000, 100000, ... 식으로 나타내면 0보다 크거나 같은 모든 K에

www.acmicpc.net

1. 10^K인 동전과 25*100^K 동전이 있는데 값은 10^15보다 작거나 같은 자연수이므로

  1, 10, 25, 100, 1000, 2500, 10000, 100000,...로 10^15 이하까지 반복된다

2. 근데 계속보면 1, 10, 25의 값에 100씩 곱해지는 동전이 반복되는 것을 알 수 있다. (1, 10, 25), (100, 1000, 2500),

(10000, 100000, 250000) ......

3. 그러므로 값을 2자리씩 끊어서 dp로 연산하면 최소의  값이 나온다.

T = int(input())
k = 0
coin = [1, 10, 25]

while T:
    T -= 1
    x = int(input())
    ans = 0
    dp = [10**15+1 for _ in range(100)]
    dp[0] = 0
    for c in coin:
        for i in range(c, 100):
            dp[i] = min(dp[i], dp[i-c]+1)
    while x:
        ans += dp[x % 100]
        x //= 100
    print(ans)

 

 

'알고리즘 > BOJ' 카테고리의 다른 글

[Python] 백준 1132: 합  (0) 2021.09.29
[Python] 백준 17371: 이사  (0) 2021.09.27
[Python] 백준 2590: 색종이  (0) 2021.09.26
[Python] 백준 13975: 파일 합치기 3  (0) 2021.09.26
[Python] 백준 2513: 통학버스  (0) 2021.09.25

댓글