

#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int abil[2][16];
int ch[16];
int n, res = 2147000000;
void DFS(int s, int L)
{
if(L == n/2)
{
vector<int> A, B;
for(int i = 0; i < n; i++)
{
if(ch[i] == 1)
A.push_back(i);
else
B.push_back(i);
}
int sumA = 0, sumB = 0;
for(int i = 0; i < A.size(); i++)
{
sumA += abil[0][A[i]];
sumB += abil[1][B[i]];
}
res = min(res, abs(sumA - sumB));
}
else
{
for(int i = s; i < n; i++)
{
ch[i] = 1;
DFS(i+1, L+1);
ch[i] = 0;
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for(int i = 0; i < n; i++)
{
cin >> abil[0][i] >> abil[1][i];
}
DFS(0, 0);
cout << res << "\n";
return 0;
}
1. 각 선수의 능력치 입력을 다음과 같이 받는다.
87 | 66 | 93 | 72 | 78 |
84 | 78 | 94 | 92 | 63 |
2. 1번부터 6번 선수 중 3명을 뽑는다. 뽑은 선수를 흰돌팀(vector A), 뽑지 않은 선수를 검은돌팀(vector B)으로 간주한다.
3. 각 팀의 능력치를 더해서 뺀 값의 절댓값 중 가장 작은 값을 출력한다.
'CodingTest Exam > 코딩테스트 실전 모의고사(with C++) : 대기업 대비' 카테고리의 다른 글
2-1. 숨겨진 합 ★★☆☆☆ (0) | 2023.09.14 |
---|---|
1-5. 효율적인 공부 ★★★☆☆ (0) | 2023.09.14 |
1-3. 영화 관람 ★★★☆☆ (0) | 2023.09.14 |
1-2. 오렌지 나무 ★★★★☆ (0) | 2023.09.14 |
1-1. 공통 문자열 ★★☆☆☆ (0) | 2023.09.14 |