#include <iostream>
#define MAXL 20
#define MAXJ 100
using namespace std;
int DP[MAXL+1][MAXJ+1], L[MAXL+1], J[MAXJ+1];
int N;
void input() {
cin >> N ;
for (int i = 1; i <= N; i++)
cin >> L[i];
for (int i = 1; i <= N; i++)
cin >> J[i];
}
void solve() {
for (int i = 1; i <= N; i++) {
for (int j = 1; j < 100; j++) {
if (j >= L[i])
DP[i][j] = max(DP[i - 1][j - L[i]] + J[i], DP[i - 1][j]);
else
DP[i][j] = DP[i - 1][j];
}
}
int res = 0;
for (int i = 1; i < 100; i++)
res = max(DP[N][i], res);
cout << res << endl;
//cout << DP[N][99] << endl;
}
int main() {
input();
solve();
}
가방 문제였다.
우선 초기화를 안해줘도 되는데 해준 부분이 가장 문제였다.
시작을 1부터로 해야 -1을 해줬을 때 문제가 없다.
[백준 1535번] 안녕
https://www.acmicpc.net/problem/1535 1535번: 안녕 첫째 줄에 사람의 수 N(<=20)이 들어온다. 둘째 줄에는 각각의 사람에게 인사를 할 때, 잃는 체력이 1번 사람부터 순서대로 들어오고, 셋째 줄에는 각각의
deefer.tistory.com
[알고리즘] 배낭 문제(Knapsack Problem)
배낭 문제(Knapsack Problem) 배낭 문제란 배낭에 담을 수 있는 무게의 최대값이 정해져 있고, 일정한 가치와 무게가 정해져있는 짐들을 배낭에 닮을 때, 가치의 합이 최대가 되도록 짐을 고르는 방법
dheldh77.tistory.com
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 3933 라그랑주의 네 제곱수 정리 (0) | 2021.06.15 |
---|---|
[BOJ] 1058 친구 (0) | 2021.06.10 |
[BOJ] 1261 알고스팟 (0) | 2021.05.21 |
[BOJ] 1182 부분수열의 합 (0) | 2021.05.15 |
[BOJ] 6603 로또 (0) | 2021.05.15 |