practivceAlgorithm/백준

[백준][Python] 1535 안녕 : 0 - 1 knapsack

findTheValue 2021. 10. 3. 15:43

기본적인 0, 1배낭문제. 열은 hp, 행은 각 선택지.

이전 hp에서 최댓값을 계승할 것이냐? 아니면 새로운 선택지를 취할것이냐?

 

import sys
input = sys.stdin.readline


N = int(input()) 
L = [0] + list(map(int, input().split()))
P = [0] + list(map(int, input().split()))
dp = [[0] * 101 for _ in range(N+1)] 

for i in range(1, N+1): 
    for j in range(1, 101): 
        if L[i] <= j: 
            dp[i][j] = max(dp[i-1][j], dp[i-1][j-L[i]] + P[i]) 
        else: 
            dp[i][j] = dp[i-1][j] 

print(dp[N][99])