:pencil2: 코드

import sys
# sys.stdin = open("input.txt")
input = sys.stdin.readline


"""
dp[i]: i 크기의 무게를 가졌을 때 최대 가치
"""
n, k = map(int, input().split())
dp = [0] * (k + 1)
for _ in range(n):
    w, v = map(int, input().split())
    for i in range(k, w - 1, -1):
        if dp[i] < dp[i - w] + v:
            dp[i] = dp[i - w] + v

print(dp[k])

:start: 풀이

dp문제를 접했으면 한번쯤은 풀어 봤을 냅색문제(배낭문제)이다

dp[i]i 크기의 무게를 가졌을 때 최대 가치로 설정 후,

최대 무게부터 현재 무게를 담을 수 있는 곳 까지 확인하면서 최대 가치를 갱신해준다

댓글남기기