dp를 이차원 배열로 만들어서 풀어봤는데, 틀립니다.
http://boj.kr/7c9fc1fdb4894c518c897537de03f02b
선생님, 안녕하세요~
dp를 이차원 배열로 만들어서 n번째 인덱스까지 돈m을 썼을때의 최대 칼로리 양을 저장하게 했습니다.
int dp[5004][10004]; // n번째 인덱스까지 돈m을 썼을때 최대 칼로리양그 후 나머지 부분은, 동전문제에서 했던 것과 비슷하게,
단지 이차원 배열이니깐 dp[i][j]를 비교할 때, 가격이 이전 인덱스가 더 큰지, 아니면 이번 인덱스에서 가격만큼을 빼고 칼로리만큼을 더한게 더 큰지 비교해주도록 했는데요.
for (int i = 1; i <= n; i++)
{
for (int j = 1 * 100; j <= m * 100; j++)
{
if (price[i] > j)
{
dp[i][j] = dp[i - 1][j];
}
else
{
dp[i][j] = max(dp[i - 1][j], dp[i][j - price[i]] + cal[i]);
}
mx = max(mx, dp[i][j]);
}
}지금 제가 생각하기에, 코드를 이렇게 짰을때, 일차원배열과 이차원배열이 큰 차이가 있나 싶기도하고, 다른 냅색문제에서 이렇게해서 통과하는 경우가 있었기에,
어떤 차이가 있을까, 반례가 뭐가있을까 질문드리고 싶습니다.
답변 1
1
안녕하세요 google님 ㅎㅎ
dp를 이차원 배열로 만들어서 n번째 인덱스까지 돈m을 썼을때의 최대 칼로리 양을 저장하게 했습니다.
>>
무슨 코드인지 이해했습니다. 괜찮은 로직입니다. ㅎㅎ
#include <bits/stdc++.h>
using namespace std;
int n, c;
double m, p;
int dp[5004][10004];
int cal[5004];
int price[5004];
int m1, m2;
int main() {
while (true) {
scanf("%d %d.%d", &n, &m1, &m2);
int max_price = m1 * 100 + m2;
if (n == 0) {
break;
}
for (int i = 1; i <= n; i++) {
scanf("%d %d.%d", &c, &m1, &m2);
cal[i] = c;
price[i] = m1 * 100 + m2;
}
int mx = 0;
for (int i = 1; i <= n; i++) {
for (int j = 0; j <= max_price; j++) {
if (price[i] > j)
{
dp[i][j] = dp[i - 1][j];
}
else
{
dp[i][j] = max(dp[i - 1][j], dp[i][j - price[i]] + cal[i]);
}
mx = max(mx, dp[i][j]);
}
}
printf("%d\n", mx);
}
return 0;
}
다만 이렇게 해야 되지 않을까요?
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
4-F 경우의 수 질문입니다.
0
10
1
코딩살구클럽 가입이 안됩니다.
0
31
0
살구 클럽에 대한 질문있습ㄴ디ㅏ
0
34
1
교안 158페이지 문의드립니다
0
34
2
코딩살구클럽 관련 건의사항
0
84
1
코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다
0
35
1
진행 방법 질문드립니다!
0
70
2
2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.
0
60
2
2주차 개념#12 트리 순회
0
32
2
백준사이트가 종료된다고 합니다.
0
296
2
백준 서비스 종료
9
909
1
sk 하이닉스 코테 대비
0
375
2
3-G 최댓값 질문
0
52
1
모듈러 연산 값이 10이 아닌 경우도 있지 않나요?
0
84
2
3-I 코드 질문드립니다.
0
63
2
3-N 질문 있습니다.
0
68
2
학습방법
0
103
2
4-H 질문 있습니다 (코드 리뷰)
0
67
2
코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.
0
177
2
2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.
0
70
2
2주차 개념 #4-2. 인접행렬 질문있습니다.
0
65
2
1-A 문제풀이 후 궁금한 점이 생겨서 질문드립니다.
0
52
2
조합 재귀 풀이 확인 해주시면 감사하겠습니다.
0
69
2
함수별 시간복잡도
0
75
2





