12865번 - 평범한 배낭

2024-01-24
#C++#백준

문제 풀이 시간 : 1시간

문제 풀이

이 문제는 앞에서 블록 함께 쌓기를 풀면서 배웠던 배낭 문제 알고리즘을 사용하면 간단하게 풀 수 있는 문제였다.

 

 

최종 코드

C++
#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]; }