Written on
·
75
·
Edited
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
#include<iostream>
#include<algorithm>
#include<vector>
#include<utility>
using namespace std;
int n,person[14],ret =987654321,temp,temp1,visited[14],comp[14];
string s;
vector<int> adj[14];
pair<int,int> dfs(int here, int value){//인접구 개수, 인구수 반환
visited[here] =1;
pair<int,int> ret = {1,person[here]};
for(int there:adj[here]){
if(comp[there] != value) continue;
if(visited[there]) continue;
pair<int,int> temp_ = dfs(there,value);
ret.first +=temp_.first;
ret.second += temp_.second;
}
return ret;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>n;
for(int i =1; i<=n;i++){
cin>>person[i];
}
for(int i =1;i<=n;i++){
cin>>temp;
for(int j =0; j<temp;j++){
cin>>temp1;
adj[i].push_back(temp1);
adj[temp1].push_back(i);
}
}
for(int i =1;i<(1<<n)-1; i++){
fill(&comp[0],&comp[0]+14,0);
fill(&visited[0],&visited[0]+14,0);
int idx1=-1,idx2 =-1;
for(int j =0; j<n;j++){
if(i&(1<<j)){
comp[j+1]=1;
idx1 = j+1;
}
else idx2 = j+1;
}
pair<int,int> comp1 = dfs(idx1,1);
pair<int,int> comp2 = dfs(idx2,0);
if(comp1.first+comp2.first == n) ret = min(ret,abs(comp1.second-comp2.second));
}
cout<<(ret==987654321 ? -1:ret);
return 0;
}
저는 이렇게 백준에 제출했을때 맞았다고 나오는데 제 vscode에서는
예제에서 밑에 만큼 입력하면 -1이 출력되어 끝나 버립니다 왜 그런건가요..? 다른 문제 풀때도 정답은 맞지만 제가 실행하면 도중에 입력을 그만 받습니다.. ㅠㅠ
6
5 2 3 4 1 2
2 2 4
4 1 3 6 5
Answer 3
0
아뇨.. 이전에 대학교에서 배울때 하던대로 세팅 되어있습니다. 컴파일 옵션을 교안대로 하고 싶지만 제 노트북은 윈도우이고 vscode는 맥북에서만 설명되어 있길래 시도하다가 실패했습니다...
0
0
안녕하세요, 인프런 AI 인턴입니다.
gimg6156님, 질문해 주셔서 감사합니다. 코드가 백준에서 맞았지만, 비주얼 스튜디오 코드(VSCode)에서는 입력 도중에 프로그램이 종료되는 문제가 발생한다는 점에 대해 답변드리겠습니다.
주어진 코드는 n개의 구역에서 인구의 차이를 최소화하면서 두 그룹으로 나누는 문제를 해결하려 하고 있습니다. DFS를 사용하여 각 그룹 내부의 연결성과 인구 수를 계산합니다.
입출력 설정 문제:
ios_base::sync_with_stdio(false);
와 cin.tie(NULL);
는 기본 cin
과 cout
의 동기화를 해제하여 속도를 높이는 설정입니다. 이는 입력과 출력을 번갈아가며 사용할 때 문제를 일으킬 수 있습니다.cin
/cout
를 빈번히 사용하는 것을 피하고, 많은 데이터를 빠르게 넣을 때는 주의해야 합니다.빠진 입력:
디버깅:
cout
을 사용해 현재 상태나 변수 값을 출력하여 코드의 흐름을 추적해 보면 도움이 될 것입니다.관련하여 비슷한 질문과 답변이 있는 질문 링크를 참고해 주세요. 이는 다른 학습자들이 비슷한 문제를 겪었을 때 어떻게 해결했는지 알려줄 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
노트북이 윈도우이시면 제 교안에 있는 설명되어있는 DEVC++로 설치해서 진행부탁드립니다. 윈도우의 경우 다른 프로그램 - 컴파일이 이상한 에러가 많이 나서요.. DEVC++이 그나마 안 나더라구요. 이걸로 진행부탁드립니다.