작성
·
384
0
https://www.acmicpc.net/problem/12865
#include <iostream>
#include <algorithm>
using namespace std;
int N, K;
int W[101];
int V[101];
int DP[101][100001];
int main()
{
scanf("%d%d", &N, &K);
for (int i = 1; i <= N; i++){
scanf("%d %d", &W[i], &V[i]);
}
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= K; j++)
{
if (j < W[i])
{
DP[i][j] = DP[i-1][j];
}
else
DP[i][j] = max(DP[i-1][j],DP[i-1][j-W[i]]-V[i]);
}
}
printf("%d", DP[N][K]);
}
안녕하세요? 정올 문제로 배낭문제 수강하고 똑같이 있는 백준문제를 발견하고 작성한 코드인데 채점을 하면 틀렸다고 뜹니다. 혹시 이유를 알 수 있을까요?
답변 1
1
안녕하세요 Estados Unidos님.
질문해주신 백준의 문제는 영상에서 다룬 문제와 다릅니다.
영상의 경우에는 1개의 물건을 최대 1개 담을 수 있지만, 올려주신 백준 문제에선 해당 제약이 없습니다.
따라서, 올려주신 백준 문제는 아래 정올 문제와 동일합니다.
https://jungol.co.kr/problem/1077?cursor=eyJwcm9ibGVtc2V0IjoiOCIsImZpZWxkIjo2LCJpZHgiOjd9
Estados Unidos님이 만족하시는 답변이 되었기를 바라며, 답변 해결로 상태 변경을 부탁드립니다.
이후에도 문제를 풀거나 공부하시면서 어려운 점이 있다면 질문 올려주세요.
감사합니다.