2/BOJ

백준 12865번 - 평범한 배낭

하례은 2020. 10. 12. 01:26

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 - Dynamic Programming 

 

DP의 대표적인 문제인 배낭문제. 

 

1. w <= j : 물건 i를 배낭에 담지 않을경우와 담을 경우를 고려

2. w > j : 물건 i의 무게가 임시 배낭의 무게를 초과

 

n, k = map(int, input().split())
aws = [[0 for _ in range(k+1)] for _ in range(n+1)]

for i in range(1,n+1):   
    w, v = map(int, input().split())
    for j in range(1,k+1):  
        if w <= j:
            aws[i][j] = max(aws[i-1][j-w]+v,aws[i-1][j])
        else:
            aws[i][j] = aws[i-1][j]


print(aws[n][k])

 

 

c언어 추가~