KT 코테에서 냅색 문제가 나왔는데 항상 약점이었다. 새로 공부할 목록 중 하나로 연습하겠다.
#include <iostream>
#include <vector>
using namespace std;
void input_data(int* N, vector<int>& L, vector<int>& J)
{
cout << "input_data()\n";
int i, temp;
cin >> *N;
for (i = 0; i < *N; i++)
{
cin >> temp;
L.push_back(temp);
}
for (i = 0; i < *N; i++)
{
cin >> temp;
J.push_back(temp);
}
return;
}
int find_answer(int N, vector<int>& L, vector<int>& J)
{
cout << "find_answer()\n";
int answer = 0;
int i, j;
vector <int> dp(101, 0);
for (i = 0; i < N; i++)
{
cout << "i : " << i << "\n";
for (j = 100; j >= L[i]; j--)
{
dp[j] = max(dp[j], dp[j - L[i]] + J[i]);
cout << "dp[" << j << "] = " << dp[j] << "\n";
}
}
answer = dp[99];
return answer;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
vector <int> L;
vector <int> J;
input_data(&N, L, J);
cout << find_answer(N, L, J) << "\n";
return 0;
}