#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
int w[110]; // 물건의 무게
int v[110]; // 물건의 가치
int value[110][100101];
void backpack(int n, int k) {
for (int i=1; i<=n; i++) {
for (int j=1; j<=k; j++) {
if (j >= w[i]) { value[i][j] = max(value[i-1][j], value[i-1][j-w[i]] + v[i]); }
else { value[i][j] = value[i-1][j]; }
}
}
cout << value[n][k]; // 최대 가치
}
int main() {
int n, k; // 물건의 개수와 가방의 무게
cin >> n >> k;
for (int i=1; i<=n; i++) { cin >> w[i] >> v[i]; }
backpack(n, k);
return 0;
}
문제를 풀던 도중에 런타임에러가 났다. 이유를 찾아보니 배열의 수를 너무 작게해서 에러가 난것이었다.;;
처음부터 수를 크게 가야겠다.