백준_문제풀이

[백준]: 2309번: 일곱 난쟁이 / 완전 탐색(Brute-force Search)

표기웅 2018. 7. 8. 20:55

https://www.acmicpc.net/problem/2309 

해결순서

1. result로 입력받은 9개의 난쟁이 키를 합친다.

2. 9C2=36가지 밖에 경우의 수가 발생할 수 없기에 2중포문으로 완전탐색을 실시한다. (2명을 제외하면 일곱난쟁이 이므로)

3. 조건 중 가능한 정답이 여러가지인 경우에 아무거나 출력하라고 했으므로 check변수를 통해서 초기에 바로 구해진 2개의 index값을 MAX로 초기화하고 for문을 탈출한다.

4. 정렬 후 출력!





#include<iostream>

using namespace std;

#include<algorithm>

int arr[10];

int n,result = 0;

#define MAX 987654321

bool check = false;

int main()

{

for (int i = 1; i <= 9; i++)

{

cin >> arr[i];

result += arr[i];

}

for (int i = 1; i <= 9; i++)

{

for (int j = i+1; j <= 9; j++)

{

if ((result - arr[i] - arr[j]) == 100)

{

arr[i] = MAX;

arr[j] = MAX;

check = true;

break;

}

}

if (check)

break;

}

sort(arr, arr + 10);

for (int i = 1; i <= 7; i++)

{

if(arr[i]!=MAX)

cout << arr[i] << endl;

}

return 0;

}