Skip to content

Commit 0aa40bc

Browse files
authored
Create Study_BOJ_12865_평범한배낭.py
1 parent 16e8809 commit 0aa40bc

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# BOJ #12865. 평범한 배낭 (골드5)
2+
3+
import sys
4+
input = sys.stdin.readline
5+
6+
# 입력
7+
N, K = map(int, input().split()) # N: 물품의 수, K: 버틸 수 있는 무게
8+
items = [[0, 0]]
9+
for _ in range(N):
10+
items.append(list(map(int, input().split())))
11+
12+
# DP
13+
knapsack = [[0] * (K+1) for _ in range(N+1)] # DP표는 0~K+1, 0~N+1로 구성
14+
15+
for i in range(1, N+1):
16+
for j in range(1, K+1):
17+
weight = items[i][0]
18+
value = items[i][1]
19+
20+
if j >= weight: # "현재최대무게j가 해당물건무게보다 큰 경우
21+
# 표의 윗 셀의 값과 현재물건의V+이전물건의V값의 최댓값을 DP[i][j]에 저장
22+
knapsack[i][j] = max(knapsack[i-1][j], knapsack[i-1][j-weight] + value)
23+
else: # #"현재최대무게j가 해당물건무게보다 작은 경우 (현재 물건을 담을 수 없는 경우)
24+
# 이전 값을 가져온다.
25+
knapsack[i][j] = knapsack[i-1][j]
26+
27+
print(knapsack[N][K])

0 commit comments

Comments
 (0)