본문 바로가기

알고리즘 문제풀이/추천 문제

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

반응형
 

2309번: 일곱 난쟁이

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

www.acmicpc.net

 

모든 난쟁이의 키를 더한 다음 100을 빼준 값을 sum에 저장한다. 두 수의 합이 sum을 만족하는 숫자 두 개를 찾기만 하면 된다.

 

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    int x[9];
    int sum = -100;
    
    for(int i = 0; i < 9; i++){
        cin >> x[i];
        sum += x[i];
    }
    
    sort(x, x+9);
    int chk = 0;
    int no1, no2;
    
    // 두 수의 합이 sum이 되는 숫자 두 개 구한다
    for(int i = 0; i < 9; i++){
        for(int j = i + 1; j < 9; j++){
            if(x[i] + x[j] == sum){
                chk = 1;
                no1 = i;
                no2 = j;
                break;
            }
        }
        if(chk == 1)
            break;
    }
    
    for(int i = 0; i < 9; i++){
        if(i == no1 || i == no2)
            continue;
        cout << x[i] << endl;
    }
    
    
    return 0;
}
반응형