λ¬Έμ
nκ°μ§ μ’ λ₯μ λμ μ΄ μλ€. κ°κ°μ λμ μ΄ λνλ΄λ κ°μΉλ λ€λ₯΄λ€. μ΄ λμ μ μ λΉν μ¬μ©ν΄μ, κ·Έ κ°μΉμ ν©μ΄ kμμ΄ λλλ‘ νκ³ μΆλ€. κ·Έ κ²½μ°μ μλ₯Ό ꡬνμμ€. κ°κ°μ λμ μ λͺ κ°λΌλ μ¬μ©ν μ μλ€.
μ¬μ©ν λμ μ ꡬμ±μ΄ κ°μλ°, μμλ§ λ€λ₯Έ κ²μ κ°μ κ²½μ°μ΄λ€.
μ λ ₯
첫째 μ€μ n, kκ° μ£Όμ΄μ§λ€. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) λ€μ nκ°μ μ€μλ κ°κ°μ λμ μ κ°μΉκ° μ£Όμ΄μ§λ€. λμ μ κ°μΉλ 100,000λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€.
μΆλ ₯
첫째 μ€μ κ²½μ°μ μλ₯Ό μΆλ ₯νλ€. κ²½μ°μ μλ 231λ³΄λ€ μλ€.
https://www.acmicpc.net/problem/2293
π‘ νμ΄ λ° μ½λ
n, k = map(int, input().split())
coin = []
for _ in range(n):
coin.append(int(input()))
dp = [0 for _ in range(k+1)]
dp[0] = 1
for c in coin:
for i in range(k+1):
if i - c >= 0:
dp[i] += dp[i-c]
print(dp[k])
μ²μ μ ν DP λ¬Έμ μ μ νμ΄μλ€.
1, 2, 5λΌλ λμ μ κ°μΉκ° λ΄κΈ΄ coin 리μ€νΈμ λν λ°λ³΅λ¬Έμ λμ μ 1μλ§ μ¬μ©νμ λ, 2μμ μΆκ°νμ¬ 1μκ³Ό 2μμ μ¬μ©νμ λ, 5μμ μΆκ°νμ¬ 1μ, 2μ, 5μμ μ¬μ©νμ λλ₯Ό μλ―Ένλ€. dp[i]λ iλΌλ μλ₯Ό λ§λ€ μ μλ κ²½μ°μ μλ₯Ό μλ―Ένλ€. μ΄λ, μΆκ°λλ λμ (c)μ λ°λΌ dp[i]λ iκ° cλ³΄λ€ ν¬λ€λ κ°μ νμ i-cμ κ²½μ°μ μ(dp[i-c])λ₯Ό λμ ν΄ μ£Όλ©΄λλ€. i-cμ λ§λ€\κΈ° μν λμ μ μ‘°ν©λ€μ cλ₯Ό λν΄μ£Όλ©΄ iκ° λκΈ° λλ¬Έμ΄λ€. λ°λΌμ, μ νμμ dp[i] = dp[i] + dp[i-c] μ΄λ€.
μλμ κ²½μ°μ μλ₯Ό λνλΈ νλ₯Ό 보면 μ΄ν΄κ° μ¬μΈ κ²μ΄λ€.
'Algorithm > π Baekjoon Judge' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] λ°±μ€ 17609λ² νλ¬Έ - νμ΄μ¬(Python) (0) | 2021.12.31 |
---|---|
[BOJ] λ°±μ€ 16400λ² μμ νν - νμ΄μ¬(Python) (0) | 2021.12.31 |
[BOJ] λ°±μ€ 3107λ² IPv6 - νμ΄μ¬(Python) (0) | 2021.12.29 |
[BOJ] λ°±μ€ 7562λ² λμ΄νΈμ μ΄λ - νμ΄μ¬(Python) (0) | 2021.12.29 |
[BOJ] λ°±μ€ 9465λ² μ€ν°μ»€ - νμ΄μ¬(Python) (0) | 2021.11.24 |