문제 설명
•
: 물건의 개수
•
: 배낭에 넣을 수 있는 무게 제한
•
물건들은 적절하게 배낭에 담아서 나올 수 있는 가치합의 최댓값을 구하는 문제
예제 입력/출력
•
입력1
4 7
6 13
4 8
3 6
5 12
Plain Text
복사
•
출력1
14
Plain Text
복사
제약 조건
•
•
•
물건에 대한 제약 조건
◦
◦
문제 풀이
풀이1 브루트 포스 -
풀이2 그리디
풀이3 DP -
풀이 코드
•
Bottom-Up 방식의 구현
N, K = map(int, input().split())
W = [0]
V = [0]
for _ in range(N):
w, v = map(int, input().split())
W.append(w)
V.append(v)
dp = [[0 for _ in range(K + 1)] for _ in range(N + 1)]
for n in range(1, N + 1):
for k in range(1, K + 1): # dp[n][k]
dp[n][k] = dp[n - 1][k]
if k - W[n] >= 0:
dp[n][k] = max(dp[n][k], dp[n - 1][k - W[n]] + V[n])
print(dp[N][K])
Python
복사
Top-Down 방식의 구현