달공이와 임베디드

[백준][2309] 일곱 난쟁이 본문

카테고리 없음

[백준][2309] 일곱 난쟁이

하일리99 2020. 5. 9. 22:06

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

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

 

브루트포스로 분류된 문제이다.

 

O(n^2) 문제인데, n의 수가 10으로 정해져 있다.

 

출력시 정렬을 위해, deque를 사용하였다.

 

#include <iostream>
#include <deque>
#include <algorithm>

using namespace std;

int height[9];
int ans_height[7];

int main()
{
    int height_sum = 0;
    for (int i=0; i<9; i++)
    {
        cin >> height[i];
        height_sum += height[i];
    }
    
    int target_height = height_sum - 100;
    
    int fraud_man1;
    int fraud_man2;
    
    for(int i=0; i<9-1; i++)
    {
        for(int j=i+1; j<9; j++)
        {
            if (target_height == (height[i] + height[j]))
            {
                fraud_man1 = height[i];
                fraud_man2 = height[j];
                goto out;
            }
        }
    }
    
out:
    deque<int> list;
    for (int i=0; i<9; i++)
    {
        if (height[i] != fraud_man1 && height[i] != fraud_man2)
        {
            list.push_back(height[i]);
        }
    }
    
    sort(list.begin(), list.end());
    
    for (auto el : list)
    {
        cout << el << endl;
    }
        
}
Comments