λ¬Έμ
nκ°μ§ μ’ λ₯μ λμ μ΄ μλ€. μ΄ λμ λ€μ μ λΉν μ¬μ©ν΄μ, κ·Έ κ°μΉμ ν©μ΄ kμμ΄ λλλ‘ νκ³ μΆλ€. κ·Έλ¬λ©΄μ λμ μ κ°μκ° μ΅μκ° λλλ‘ νλ €κ³ νλ€. κ°κ°μ λμ μ λͺ κ°λΌλ μ¬μ©ν μ μλ€.
μ¬μ©ν λμ μ ꡬμ±μ΄ κ°μλ°, μμλ§ λ€λ₯Έ κ²μ κ°μ κ²½μ°μ΄λ€.
μ λ ₯
첫째 μ€μ n, kκ° μ£Όμ΄μ§λ€. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) λ€μ nκ°μ μ€μλ κ°κ°μ λμ μ κ°μΉκ° μ£Όμ΄μ§λ€. λμ μ κ°μΉλ 100,000λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€. κ°μΉκ° κ°μ λμ μ΄ μ¬λ¬ λ² μ£Όμ΄μ§ μλ μλ€.
μΆλ ₯
첫째 μ€μ μ¬μ©ν λμ μ μ΅μ κ°μλ₯Ό μΆλ ₯νλ€. λΆκ°λ₯ν κ²½μ°μλ -1μ μΆλ ₯νλ€.
https://www.acmicpc.net/problem/2294
π‘ νμ΄ λ° μ½λ
n, k = map(int, input().split())
coins = set()
for _ in range(n):
coins.add(int(input()))
dp = [1e9] * (k+1)
for c in coins:
if c <= k:
dp[c] = 1
for i in range(2, k+1):
for c in coins:
idx = i - c
if idx > 0 and dp[idx] > 0:
dp[i] = min(dp[i], dp[idx] + 1)
if dp[k] == 1e9:
print(-1)
else:
print(dp[k])
λνμ μΈ DP λ¬Έμ μ€μμλ κ°μ₯ κΈ°λ³Έμ μΈ λμ λ¬Έμ μ΄λ€. λ€λ§, λ°νμ μλ¬(μΈλ±μ€ μλ¬)λ₯Ό μ£Όμν΄μΌ νλ€. kμ λ²μλ 1 ≤ k ≤ 10,000μ΄κ³ , λμ κ°μΉλ 100,000λ³΄λ€ μμ λ²μλ₯Ό κ°λλ€. μ¦, μ£Όμμ§λ λμ μ κ°μΉκ° λ§λ€μ΄μΌ νλ κΈμ‘ λ³΄λ€ ν° κ²½μ°κ° λ°μν μ μκΈ° λλ¬Έμ μ΄μ λν μ²λ¦¬λ₯Ό μ ν΄μ£Όμ΄μΌ νλ€.
'Algorithm > π Baekjoon Judge' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] λ°±μ€ 15685λ² λλκ³€ μ»€λΈ - νμ΄μ¬(Python) (0) | 2022.08.23 |
---|---|
[BOJ] λ°±μ€ 2133λ² νμΌ μ±μ°κΈ° - νμ΄μ¬(Python) (0) | 2022.08.18 |
[BOJ] λ°±μ€ 1890λ² μ ν - νμ΄μ¬(Python) (0) | 2022.08.13 |
[BOJ] λ°±μ€ 16236λ² μκΈ° μμ΄ - νμ΄μ¬(Python) (0) | 2022.07.30 |
[BOJ] λ°±μ€ 2206λ² λ²½ λΆμκ³ μ΄λνκΈ° - νμ΄μ¬(Python) (0) | 2022.07.27 |