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 |
댓글