본문 바로가기
Programming/Algorithm

백준 일곱난쟁이

by OKOK 2018. 2. 21.

/*

일곱 난쟁이 조합 알고리즘이 아니라 2중 포문 으로 풀어보도록 하겠습니다.

*/


#include <iostream>

#include <algorithm>

using namespace std;

int numArr[9];

int total, sum, a, b;


void problemIn() {

for (int i = 0; i < 9; i++) {

cin >> numArr[i];

total += numArr[i];

}

sum = total;

}


void solve() {

for (int i = 0; i < 8; i++) {

sum -= numArr[i];

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

sum -= numArr[j];

if (sum == 100) {

a = i;

b = j;

sum += numArr[j];

break;

}

else {

sum += numArr[j];

}

}

sum += numArr[i];

}


numArr[a] = numArr[b] = -1;

sort(numArr, numArr + 9);

for (int i = 2; i < 9; i++) {

cout << numArr[i] << endl;

}

}


int main(void) {

problemIn();

solve();

return 0;


백준 일곱난쟁이 단순 조합이 아니라, 하번 포문 2개를 이용해서 풀어보았습니다. 이렇게 할 경우 break 를 나오고 break 를 나오고 할 때 원래의 상태로 돌려둬야하기 때문에 주의해야 합니다. 이프 엘스 의 경우 2가지 모두 원래 상태로 돌려두어야 합니다.