Skip to content

Commit 53a83d7

Browse files
committed
[BOJ]#12865. 평범한배낭_2트/골드5/h(재도전)
https://www.acmicpc.net/problem/12865
1 parent cb0527e commit 53a83d7

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"""
2+
[BOJ]평범한 배낭_2트/09.14.2025
3+
https://www.acmicpc.net/problem/12865
4+
"""
5+
6+
import sys
7+
input =sys.stdin.readline
8+
#1. 입력 변수 - 물품 총 개수 / 제한 무게 / 물건별 무게 w, 가치 v
9+
N , K = map(int,input().split())
10+
items = [[] for _ in range(N+1)]
11+
for i in range(1,N+1):
12+
items[i] = list(map(int, input().split()))
13+
# print(items)
14+
#2. DP : 0-1 Knapsack 문제
15+
# DP[k][i]: 최대 K kg 제한을 가진 가방안에 0~ i번쨰 item 까지 탐색 후 최대 가치
16+
#(물건 w > 배낭 무게 k) dp[k][i] = dp[k][i-1] #물건i는 못 넣음
17+
#(물건 w <= 배낭 무게 k) dp[k][i] = max(item[v] + dp[k-w][i-1],dp[k][i-1]) # 물건i를 넣거나(배낭 K-item 무게 만큼의 최대값 + 물건 i 넣기) , 안넣거나
18+
19+
dp = [[0]*(N+1) for _ in range(K+1)]
20+
for k in range(1,K+1) :
21+
for i in range(1, N+1):
22+
if items[i][0] <= k :
23+
dp[k][i] = max(dp[k-items[i][0]][i-1] + items[i][1],dp[k][i-1] )
24+
else :
25+
dp[k][i] =dp[k][i-1]
26+
27+
# print(dp)
28+
#3. dp[-1][-1] = 최종 배낭 K kg에서 최대 가치 출력
29+
print(dp[-1][-1])

0 commit comments

Comments
 (0)