본문 바로가기
알고리즘

[백준/파이썬] #2294

by 룰루루 2025. 3. 19.

오늘도 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