BOJ

백준 2309 - 일곱 난쟁이

yanJuicy 2019. 7. 3. 19:54
반응형

문제

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

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

 

풀이

9개 중에서 7개를 골라서 더하여 100을 만드는 것보다, 9개의 합에서 2개씩 순서대로 묶어서 빼다가 100이 되는 순간 출력을 하면 된다.

 

코드

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
#include <iostream>
#include <algorithm>
using namespace std;
 
int arr[9];
int sum;
 
int main()
{
    cin.tie(0);
    ios::sync_with_stdio(false);
 
    for (int i = 0; i < 9; i++)
    {
        cin >> arr[i];
        sum += arr[i];
    }
 
    bool isStop = false;
 
    for (int i = 0; i < 8; i++)
    {
        int first = arr[i];
        for (int j = i + 1; j < 9; j++)
        {
            int second = arr[j];
            if (sum - (first + second) == 100)
            {
                arr[i] = arr[j] = 0;
                isStop = true;
                break;
            }
        }
 
        if (isStop) break;
    }
 
    sort(arr, arr + 9);
 
    for (int i = 2; i < 9; i++)
        cout << arr[i] << '\n';
 
    return 0;
}
cs

 

반응형

'BOJ' 카테고리의 다른 글

백준 10844 - 쉬운 계단 수  (0) 2019.07.07
백준 11052 - 카드 구매하기  (1) 2019.07.05
백준 13904 - 과제  (1) 2019.07.02
백준 2212 - 센서  (1) 2019.06.30
백준 1182 - 부분수열의 합  (0) 2019.06.29