질문 있습니다
157
작성한 질문수 3
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n;
int maximum=-2147000000;
vector<pair<int, int>> A;
void DFS(int day, int now_day, int income);
int main(){
cin >> n;
for(int i=1; i<=n; i++){
int a, b;
cin >> a >> b;
A.push_back(make_pair(a, b));
}
for(int i=1; i<=A.size(); i++){
DFS(A[i].first, i, 0);
}
cout << maximum;
}
void DFS(int day, int now_day, int income){
if(day>n){
if(income>maximum) maximum=income;
return;
}
else if(day==n){
income+=A[now_day].second;
if(income>maximum) maximum=income;
return;
}
else{
income+=A[now_day].second;
for(int i=day+1; i<=n; i++){
DFS(day+A[i].first, i, income);
}
}
}해당 코드로는 알맞는 정답이 출력되지 않는데, 그 이유를 모르겠습니ㅏㄷ.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
해당 코드의 주요 문제는 DFS 함수의 탐색 조건과 인덱스 관련 로직에 있습니다. 주어진 코드는 상담할 수 있는 날짜를 초과해서 탐색이 진행될 수 있으며, A 벡터의 인덱스 접근 방식에 오류가 있습니다.
벡터
A는 0부터 인덱싱이 시작되므로,main함수에서DFS를 호출할 때i-1을 사용해야 합니다. 즉,DFS(A[i-1].first, i-1, 0);로 수정해야 합니다.DFS함수의 첫 번째if조건문에서,day>n이 아니라now_day+day > n으로 수정해야 합니다. 상담을 시작하는 날짜(now_day)와 상담을 완료하는데 걸리는 시간(day)을 합친 값이n을 초과할 경우 탐색을 종료해야 하는데, 코드에서는 현재 날짜만 고려하고 있습니다.또한,
DFS함수 내에서 다음 상담을 선택할 때day+A[i].first대신day+A[i-1].first를 사용해야 합니다. 그리고DFS호출시,i대신i-1을 사용해야 합니다.
정리하면, 코드에서 주요 수정 사항은 다음과 같습니다:
main함수에서DFS호출 부분:DFS(A[i-1].first, i-1, 0);
DFS함수 내 조건 및 재귀 호출 부분: 조건 수정과 인덱스 접근 방식 수정
이러한 수정사항을 반영하면 코드가 올바르게 작동할 가능성이 높아집니다. 다만, 코드 전체의 취지를 고려해 필요한 추가 수정사항이 있을 수 있으니 참고하여 코드를 검토해 보시기 바랍니다.
87번 채점 프로그램에 오류가 있는 것 같습니다.
0
89
2
그리디 파트
0
115
2
안녕하세요. 선생님(54번 코드 관련 문의)
0
141
2
테스트 파일 exit_coe_1, time_limit_exceeded 질문
0
143
1
C언어로 코드를 짜면 채점 시에 한 문제 빼고 시간 초과가 발생하는데 해결하는 방법이 있을까요?
0
172
1
19번 질문있습니다
0
123
1
6번 관련 채점오류입니다
0
88
2
22번 문제는 C로 풀어주신 건가요 C++로 풀어주신 건가요?
0
166
2
dev C++ 콘솔창 바로 닫힘
0
245
1
최신화하기
0
171
1
채점이 안되요...
1
260
1
안녕하세요 강사님 정렬에 대해서 설명이 조금 더 듣고 싶습니다.
0
113
1
45번 공주구하기 문제를 list를 이용해서 이렇게 풀어도 될까요?
0
155
1
39번 두 배열 합치기 문제 채점 오류인가 코드 오류인가
0
155
0
채점기에서 틀렸다고 나오는데 이유를 모르겠습니다.
0
149
2
해당 강의에서 C언어로만 진행하는 강의 문의 건
0
145
2
87번 문제 섬나라 아일랜드 질문
0
128
1
16번 문제에서 직접 답을 대입하면 정답이 나오는데 채점에서 wrong answer가 나옵니다.
0
149
1
40번 교집합 문제
0
166
1
43번 뮤직비디오 문제 테스트케이스 4번을 만족 못합니다.
0
170
1
41. 연속된 자연수의 합 문제 질문있습니다.
0
165
1
질문있습니다.
0
193
2
시간초과가 나요
0
172
1
43번 문제 3 ~ 5번에 문제가 있는것 같습니다.
0
247
1





