코드플러스 기초 (브루트포스) - 2309 (C++)

2022. 7. 25. 07:18코딩테스트/백준

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

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

문제해결

 

2중 for문을 돌면서 맞는 값이 나올때까지 순회하면 된다.

 

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
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main()
{
    
    vector<int> vecTalls;
    int num;
    int total=0//총합 저장
    //입력받기
    for(int i = 0 ; i < 9 ; i++)
    {
        scanf("%d",&num);
        total+=num;
        vecTalls.push_back(num);
    }
    
    //찾기
    for(int i = 0 ; i < 8 ; i++)
    {
        for(int j = i+1 ; j < 9 ; j++)
        {
            if(vecTalls[i]+vecTalls[j]+100 == total)
            {
                vecTalls[i] = 0;
                vecTalls[j] = 0;
                i = 100//이중포문 탈출을 위해서
                break;
            }
        }
    }
    
    //오름차순 정리
    sort(vecTalls.begin(),vecTalls.end());
    
    //키출력
    for(int i = 0 ; i < 9 ; i++)
    {
        if(vecTalls[i] != 0)
            cout<< vecTalls[i] <<"\n";
    }
    
    return 0;
    
}
cs