오늘도 30분 안에 풀었다!
동전으로 금액 만들기는 DP 단골 유형이라 대강의 풀이 방법이 생각난 덕이 컸다.
n, k = map(int, input().split())
coins = []
for _ in range(n):
coin = int(input())
if coin not in coins:
coins.append(coin)
coins.sort()
DP = [1e9] * (k+1)
smallest_coin = min(coins)
largest_coin = max(coins)
for i in range(smallest_coin, k+1):
if i <= largest_coin:
if i in coins:
DP[i] = 1
continue
for coin in coins:
if coin > i:
break
DP[i] = min(DP[i], DP[i-coin] + 1)
DP[k] = -1 if DP[k] == 1e9 else DP[k]
print(DP[k])
'알고리즘' 카테고리의 다른 글
[백준/파이썬] #1106 (0) | 2025.03.22 |
---|---|
[백준/파이썬] #15486 (0) | 2025.03.20 |
[백준/파이썬] #22860 (0) | 2025.03.18 |
[백준/파이썬] #22859 (0) | 2025.03.17 |
[백준/파이썬] #22856 (0) | 2025.03.16 |