Data Structures & Algorithms
[Algorithms] 동적 계획법(Dynamic Programming)-동전 교환(냅색 알고리즘)
숄구-ml
2022. 6. 8. 21:23
- 앞의 가방 문제와 마찬가지로 냅색 알고리즘을 사용하여 푼다
- 다른 점은 minimum 값을 구한다는 것이다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
if __name__=='__main__':
n = int(input())
coins = list(map(int, input().split()))
money = int(input())
dyn = [1000]*(money+1) # 동전이 1 <= M <= 500 이므로 넉넉하게 큰 값을 1000으로 주었다
dyn[0] = 0
for coin in coins:
for i in range(coin, money+1):
dyn[i] = min(dyn[i-coin]+1, dyn[i])
print(dyn[money])
|
cs |
728x90