ν°μ€ν 리 λ·°
728x90
λ°μν
λ¬Έμ
λ¬Έμ νμ΄
- 리μ€νΈλ₯Ό λ§λ€ λ, list[μ ννκ³ μ νλ μμ΄ν μ μ][μ΅λ κ°μΉ]λ‘ 2μ°¨μ λ°°μ΄μ λ§λ λ€.
- list[0]μ μ무κ²λ μ°μ£Όνμ§ μμ μν, μ΅μ΄μ λ³Όλ₯¨μ μ μ©ν μνμ΄λ―λ‘ list[0]μ κ°λ€μ 0μ΄λ€.
- 2μ€ λ°λ³΅λ¬Έμ μννλ©΄μ list[1], list[2] ... λ‘ μ κ·Όνλ©° κ°λ°©μ λ£μ μ μλ μμ΄ν μ μνλ₯Ό κΈ°λ‘νλ€.
- n * m λ§νΌμ λ°λ³΅λ¬Έμ μννλ©΄, μ΅λ κ°μ΄μΉμ 체ν¬νλ€.
-
μ¦, μ΄μ μ μ νν μμ΄ν
μ κ°μ΄μΉλ₯Ό μ μ§νλ©΄μ, νμ¬ μ νν μμ΄ν
μ λ΄μμ λμ μνλ₯Ό λ°μνλ€.
- μμ΄ν μ λ΄μ μ μλκ°?, κ°μ΄μΉλ μ΄μ κ³Ό λΉκ΅νμ¬ μ΄λκ²μ μ ννλκ² μ΅λκ°μΈκ°?
- λ°λΌμ μ νμμ κ·Έλ¦Όκ³Ό κ°μ΄, νμ¬ μμ΄ν μ κ°λ°©μ λ£μ μ μλ κ²½μ°μ ν΄λΉ μμ΄ν μ κ°μ΄μΉλ₯Ό λ°μνλκ°? μλκ°μ λ°λΌ μ΅λκ°μ κ³μ°ν μ μλ€.
μ½λ
from sys import stdin
if __name__ == "__main__":
n, k = map(int, stdin.readline().split())
items = [[0, 0]] + [list(map(int, stdin.readline().split())) for _ in range(n)]
dp = [[0] * (k + 1) for _ in range(n + 1)]
for idx in range(1, n + 1):
weight, value = items[idx]
for bag_weight in range(1, k + 1):
if bag_weight < weight:
dp[idx][bag_weight] = dp[idx - 1][bag_weight]
else:
dp[idx][bag_weight] = \
max(dp[idx - 1][bag_weight - weight] + value, dp[idx - 1][bag_weight])
print(dp[n][k])
728x90
λ°μν
'π¨βπ» μ½λ©ν μ€νΈ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°±μ€: 15486 ν΄μ¬ 2 (0) | 2020.08.29 |
---|---|
λ°±μ€: 5557 1νλ (0) | 2020.08.29 |
λ°±μ€: 1495 κΈ°ν리μ€νΈ (0) | 2020.08.27 |
λ°±μ€: 11058 ν¬λ¦¬λ³΄λ (0) | 2020.08.26 |
λ°±μ€: 2294 λμ 2 (0) | 2020.08.26 |
λκΈ
κΈ λ³΄κ΄ν¨
μ΅κ·Όμ μ¬λΌμ¨ κΈ
μ΅κ·Όμ λ¬λ¦° λκΈ