/* 일곱 난쟁이 조합 알고리즘이 아니라 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가지 모두 원래 상태로 돌려두어야 합니다. |