728x90
반응형
코드
n, m = map(int, input().split())
product = [list(map(int, input().split())) for _ in range(n)]
# 가치 계산하기
values = [0] * n
# 무게 계산하기
weights = [0] * n
# 무게, 가치 값 초기화
for i in range(n):
weights[i] = product[i][0]
values[i] = product[i][1]
# dp
def dp(n, m, weights, values):
dp = [[0] * (m+1) for _ in range(n+1)]
for i in range(1, n+1):
weight = weights[i-1]
value = values[i-1]
for j in range(1, m+1):
if weight > j:
dp[i][j] = dp[i-1][j]
else:
dp[i][j] = max(dp[i-1][j], dp[i-1][j-weight] + value)
return dp[n][m]
result = dp(n, m, weights, values)
print(result)
728x90
반응형
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
백준 2559(시간 초과 나기 쉬운 문제) (0) | 2023.06.02 |
---|---|
백준 11048 (0) | 2023.05.24 |
백준 2193 (0) | 2023.05.23 |
백준 14888 #2 (0) | 2023.05.23 |
백준 14888 (0) | 2023.05.23 |