12865번 - 평범한 배낭
2024-01-24
#C++#백준
문제 풀이 시간 : 1시간
문제 풀이
이 문제는 앞에서 블록 함께 쌓기를 풀면서 배웠던 배낭 문제 알고리즘을 사용하면 간단하게 풀 수 있는 문제였다.
최종 코드
#include <iostream>
#include <vector>
using namespace std;
int dp[101][100001] = {0};
int main() {
int n, k, w, v, sum;
cin >> n >> k;
vector<pair<int, int>> vec;
for (int i = 1; i <= n; i++) {
cin >> w >> v;
vec.push_back({w, v});
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= k; j++) {
if (vec[i - 1].first > j) {
dp[i][j] = dp[i - 1][j];
} else {
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - vec[i - 1].first] + vec[i - 1].second);
}
}
}
cout << dp[n][k];
}