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언어 추가~

'2 > BOJ' 카테고리의 다른 글

백준 11399, 5585번 - ATM, 거스름돈  (0) 2020.10.21
백준 2750, 2751번 - 수 정렬하기1, 2  (0) 2020.10.20
백준 1920번 - 수 찾기  (0) 2020.10.18
백준 11401번 - 이항계수3  (0) 2020.10.13
백준 1655번 - 가운데를 말해요  (0) 2020.10.13