백준 2309번 문제 바로가기

bruteforce

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    vector<int> snowWhite;
    int total = 0;
    int height = 0;
    bool check = false;
    
    for (int i=0; i<9; i++){
        cin >> height;
        total += height;
        snowWhite.push_back(height);
    }
    
    sort(snowWhite.begin(), snowWhite.end());
    
    for (int i=0; i<9; i++){
        for (int j=i+1; j<9; j++){
            if (snowWhite[i] + snowWhite[j] == total - 100){
                check = true;
                for (int k=0; k<9; k++){
                    if (k == i || k == j){
                        continue;
                    }
                    cout << snowWhite[k] << endl;
                }
                break;
            }
        }
        if (check) break;
    }
    return 0;
}

Review

  • bruteforce을 이용하면 간단하게 풀어낼 수 있는 문제
  • 다만, 이중 for문을 사용하기에 break 처리에 유의해야 한다.
  • 내부 for문만 break하고 외부 for문은 break하지 않으면,
  • 모든 경우의 수를 출력하기 때문에 틀렸습니다가 발생할 수 있다.