알고리즘/백준

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

겜도리도리 2022. 3. 30. 23:59
반응형

문제

백준 2309 일곱 난쟁이 C++

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

풀이

무난한 브루트 포스 문제이다.

아홉 난쟁이 중에 두 난쟁이는 합에 포함이 안 되고, 100이 되는 경우가 무조건 존재하므로

루프를 돌면서 포함이 안되는 두 난쟁이를 찾고 나머지 난쟁이를 벡터 result에 push해준다.

소스 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
 
vector<int> v;
vector<int> result;
int heigth;
int heigthSum = 0;
 
void Solution()
{
    for (int i = 0; i < 8; i++)
    {
        for (int j = i + 1; j < 9; j++)
        {
            int sum = heigthSum - v[i] - v[j];
            // 합이 100이면 두 난쟁이 제외하고 result에 push
            if (sum == 100)
            {
                for (int k = 0; k < 9; k++)
                {
                    if (k == i || k == j)
                        continue;
 
                    result.push_back(v[k]);
                }
                return;
            }
        }
    }
}
 
int main()
{
    for (int i = 0; i < 9; i++)
    {
        cin >> heigth;
        heigthSum += heigth;
        v.push_back(heigth);
    }
 
    Solution();
 
    sort(result.begin(), result.end());
 
    for (int num : result)
    {
        cout << num << '\n';
    }
 
    return 0;
}
cs
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준 15654] N과 M (5) C++  (0) 2022.05.02
[백준 13335] 트럭 C++  (0) 2022.04.30
[백준 1065] 한수 C++  (0) 2022.03.29
[백준 10816] 숫자 카드 2  (0) 2022.02.12
[백준 1092] 배 C++  (0) 2021.12.11