Creative Code

[12856번]평범한 배낭 본문

백준 문제풀이

[12856번]평범한 배낭

빛하루 2023. 9. 24. 17:32

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

#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>

using namespace std;

int dp[101][100001] = { 0 };
int W[101];
int V[101];

int main() {
	cin.tie(0);
	cout.tie(0);
	ios_base::sync_with_stdio(false);
	int N, K; // N : 물건의 개수,  K : 최대 들 수 있는 무게
	cin >> N >> K;
	for (int i = 1; i <= N; i++) {
		cin >> W[i] >> V[i];
	}
	for (int i = 1; i <= N; i++) {
		for (int j = 1; j <= K; j++) {
			if (j - W[i] >= 0) {
				dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - W[i]] + V[i]);
				// dp[i][j] : 물건을 i개 사용해 들 수 있는 무게의 합이 j인 경우
			}
			else {
				dp[i][j] = dp[i - 1][j];
			}
		}
	}
	cout << dp[N][K];
}

'백준 문제풀이' 카테고리의 다른 글

[1043번]거짓말  (0) 2023.09.24
[16928번]뱀과 사다리 게임  (0) 2023.09.24
[10026번]적록색약  (0) 2023.09.24
[7576번]토마토  (0) 2023.09.24
[7569번]토마토  (0) 2023.09.24