평범한 배낭

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

import sys

n, k = map(int, input().split())

dp = [[0] * (k + 1) for _ in range(n)]

max_v = 0
for i in range(n):
    w, v = map(int, input().split())
    for j in range(k + 1):
        if j < w:
            dp[i][j] = dp[i - 1][j]
        else: # 이전에 현재 고려하는 물건의 부게만큼 뺴준것에서 현재 가치를 더한 것과 비교
            dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w] + v)
        max_v = max(max_v, dp[i][j])

print(max_v)

Last updated