냅색을 이용해서 풀기
import sys
def solution():
for i in range(1, N+1):
for j in range(K+1):
weight = data[i-1][0]
value = data[i-1][1]
if j >= weight:
check[i][j] = max(check[i-1][j-weight] + value, check[i-1][j])
else:
check[i][j] = check[i-1][j]
N, K = map(int, sys.stdin.readline().split())
data = []
check = [[0]*(K+1) for _ in range(N+1)]
for _ in range(N):
a, b = map(int, sys.stdin.readline().split())
data.append((a, b))
solution()
print(*check, sep='\n')
'파이썬 코테 준비' 카테고리의 다른 글
[백준 2565] 전깃줄 - Python(파이썬) (0) | 2021.03.04 |
---|---|
[백준 11054] 가장 긴 바이토닉 부분 수열 - Python(파이썬) (0) | 2021.03.04 |
[백준 14425] 문자열 집합 - Python(파이썬) (0) | 2021.03.04 |
[백준 2740] 행렬 곱셈 - Python(파이썬) (0) | 2021.03.04 |
[백준 1629] 곱셈 - Python(파이썬) (0) | 2021.03.04 |
댓글