백준 2294번 python 풀이 - 동전2
문제 링크
해결책
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import sys
n, k = map(int, sys.stdin.readline().rstrip().split())
coins = []
for i in range(n):
coin=int(sys.stdin.readline().rstrip())
if coin not in coins and coin <= k:
coins.append(coin)
coins.sort()
dp = [10001] * (k+1)
dp[0] = 0
for coin in coins:
for i in range(coin, k+1):
dp[i] = min(dp[i], dp[i-coin]+1)
if dp[k] == 10001:
print(-1)
else:
print(dp[k])
주석으로 달 설명
DP를 이용한 해결. 왜 그래프로 왔는지 정확히는 모르겠지만, 이거를 그래프로 해결한다면 DFS가 어울릴 것 같다.
This post is licensed under CC BY 4.0 by the author.