본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[백준] 12865. 평범한 배낭 - Python

by chaemj97 2022. 6. 28.
728x90

https://www.acmicpc.net/problem/12865

 

12865번: 평범한 배낭

첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000)

www.acmicpc.net


  • 생각
    • DP
    • 거꾸로 계산
      • 가치 최대치부터
    • 이 물건을 담는 것과 담지 않는 것중 가치가 큰 거 찾기
  • 코드
# 물품의 수, 버틸 수 있는 무게
n, k = map(int, input().split())

# 여행에 필요하다고 생각하는 물건들
items = [list(map(int,input().split())) for _ in range(n)]
dp = [0 for _ in range(k+1)]

for item in items:
    # 무게, 가치
    w,v = item
    for i in range(k,w-1,-1):
        # 이 물건을 담지 않기 / 담기 중 가치가 큰 거 선택
        dp[i] = max(dp[i],dp[i-w]+v)

print(dp[k])

 

728x90
반응형

댓글