인프런 커뮤니티 질문&답변

leehoogwan님의 프로필 이미지
leehoogwan

작성한 질문수

코딩테스트 실전 모의고사(with C++) : 대기업 대비

4. 바둑대회 코드해설(DFS)

바둑대회 코딩 질문

작성

·

194

0

#include<iostream>
#include<vector>
#include<math.h>
#include<string>
#include<deque>
#include<stack>
#include<queue>
#include<algorithm>
using namespace std;

int N;
vector<pair<int, int>> vec;
vector<int> check(N+1, 0);
int m = 2147000000;

void DFS(int k, int cnt)
{
    if(cnt == N/2)
    {
        int sum1 = 0;
        int sum2 = 0;
        for(int i = 1; i <= N; i++)
        {
            if(check[i] == 1)
            {
                sum1 += vec[i].first;
            }
            else
            {
                sum2 += vec[i].second;
            }
        }
        m = min(abs(sum1-sum2) , m);

    }

    else
    {
    for(int i = k; i <= N; i++)
    {
        if(check[i] == 0)
        {
           check[i] = 1;
           DFS(i + 1, cnt + 1);
           check[i] = 0;
        }
    }
    }
}

int main()
{
    ios_base::sync_with_stdio(false);
  
    cin >> N;
    vec.push_back({0,0});
    for(int i = 0; i < N; i++)
    {
        int a, b;
        cin >> a >> b;
        vec.push_back({a, b});
    }

   
    DFS(1, 0);


    cout << m;
    return 0;
}

답변 1

0

leehoogwan님의 프로필 이미지
leehoogwan
질문자

안녕하세요! 수업 정말 잘 듣고 있습니다!

이 문제를 설명만 듣고 풀어보다가 약간 다르게 했는데, 제 비쥬얼스튜디오코드에서는 5개 예시에 대한 답이 맞게 나오는데, 오답이라고 나옵니다.. 이유를 알 수 있을까요?..

감사합니다.

leehoogwan님의 프로필 이미지
leehoogwan

작성한 질문수

질문하기