๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold5] 2293๋ฒˆ_๋™์ „2

Dbswnstjd 2023. 2. 12. 11:24

๋ฌธ์ œ

https://www.acmicpc.net/problem/2294

 

2294๋ฒˆ: ๋™์ „ 2

์ฒซ์งธ ์ค„์— n, k๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) ๋‹ค์Œ n๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ๊ฐ์˜ ๋™์ „์˜ ๊ฐ€์น˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋™์ „์˜ ๊ฐ€์น˜๋Š” 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๊ฐ€์น˜๊ฐ€ ๊ฐ™์€ ๋™์ „์ด ์—ฌ๋Ÿฌ ๋ฒˆ ์ฃผ

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 2294๋ฒˆ ๋ฌธ์ œ - ๋™์ „ 2
n, k = map(int, input().split())
coins = [int(input()) for _ in range(n)]
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)
# print(dp)
if dp[k] == 10001:
    print(-1)
else:
    print(dp[k])