본문 바로가기
알고리즘 문제풀이/백준

백준 12865

by Hoseok 2023. 5. 24.
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