※ 문제
https://www.acmicpc.net/problem/12865
※ 문제 유형
다이나믹 프로그래밍, 배낭 문제(GOLD_5)
※ 나의 풀이
-
- DP를 이용하여 문제 해결
- 역순으로 DP값을 max로 비교 계산
import sys
N, K = map(int, sys.stdin.readline().split())
dp = [0] * (K + 1)
items = []
for _ in range(N):
items.append(list(map(int, sys.stdin.readline().split())))
for W, V in items:
# 역순으로 계산
for i in range(K, W - 1, -1):
dp[i] = max(dp[i], dp[i-W] + V)
print(dp[K])
'CODING_TEST' 카테고리의 다른 글
[백준/Python] 5567. 결혼식 (0) | 2025.01.06 |
---|---|
[프로그래머스/Python] 가장 먼 노드 (0) | 2025.01.06 |
[백준/Python] 1003. 피보나치 함수 (0) | 2024.12.31 |
[백준/Python] 21318. 피아노 체조 (0) | 2024.12.30 |
[백준/Python] 2805. 나무 자르기 (0) | 2024.12.30 |