백준, 동전 2, 22964, 파이썬
2024. 9. 10. 02:29ㆍETC/Algorithm
[유형]
DP
[문제링크]
https://www.acmicpc.net/problem/2294
[요약]
n가지 종류의 동전이 있다. 이 동전들을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그러면서 동전의 개수가 최소가 되도록 하려고 한다. 각각의 동전은 몇 개라도 사용할 수 있다.
[문제풀이]
동전의 구성이 1,5,10일때 가치의 합이 15가 되는 동전 최소 개수
동전 1을 통해 1~15원까지 만들 수 있는 동전의 최소 개수는 각각 1,2,3,...,10이다. 따라서, dp[i]=i로 갱신된다.
동전 5가 추가되었을 때, dp[4]까지의 값은 더 이상 갱신되지 않는다.
dp[5]는 min(dp[5],dp[5-5]+1)이라고 할 수 있다. 5 1개만으로 5원을 만들 수 있다.
import sys
from collections import Counter
def input():
return sys.stdin.readline().rstrip()
N, M = map(int, input().split())
coins = []
for _ in range(N):
coins.append(int(input()))
coins.sort()
dp = [10001]*(M+1)
dp[0] = 0
for coin in coins:
for i in range(coin, M+1):
dp[i] = min(dp[i],dp[i-coin]+1)
if dp[-1] == 10001:
print(-1)
else:
print(dp[-1])
'ETC > Algorithm' 카테고리의 다른 글
백준, 수리공 항승, 1449, 파이썬 (0) | 2024.09.10 |
---|---|
백준, ATM, 11399, 파이썬 (0) | 2024.09.10 |
백준, 동전1, 2293, 파이썬 (0) | 2024.09.10 |
백준, 동전 0, 11047, 파이썬 (0) | 2024.09.10 |
백준, 입국심사, 3079, 파이썬 (0) | 2024.09.06 |