티스토리 뷰
내가 짜는 방식보다 남이 짠 방식이 더 좋아서 갖고왔다
N, K = map(int, input().split())
stuff = [[0, 0]]
knapsack = [[0 for _ in range(K + 1)] for _ in range(N + 1)]
for _ in range(N):
stuff.append(list(map(int, input().split())))
for i in range(1, N + 1):
for j in range(1, K + 1):
weight = stuff[i][0]
value = stuff[i][1]
if j < weight:
knapsack[i][j] = knapsack[i - 1][j]
else:
knapsack[i][j] = max(value + knapsack[i - 1][j - weight], knapsack[i - 1][j])
print(knapsack[N][K])
input()으로 쓰면 import sys도 필요 없고, 나는 테이블을 회전해서 풀었는데 그러니까 더 직관적이지 않고 복잡했다.
'Algorithm > noj.am' 카테고리의 다른 글
[Python] 백준 1076번 - 저항 (0) | 2020.12.31 |
---|---|
[Python] 백준 11052번 - 카드 구매하기 (0) | 2020.12.31 |
[Python] 백준 2751번 - 수 정렬하기 2 (0) | 2020.12.31 |
[Python] 백준 10992번 - 별찍기 17 (0) | 2020.12.30 |
[Python] 백준 10991번 - 별찍기 16 (0) | 2020.12.30 |