[알고리즘] 일곱 난쟁이 - 백준 2309

se.jeon·2023년 3월 11일
0

알고리즘

목록 보기
16/21

문제

과정

처음에는 난쟁이 경우의 수를 세워보면서 문제를 풀어보려고 했었는데, 사실 조금 단순하게 생각 해 보면 난쟁이 두 명의 키를 전체 값에서 빼면 되는 문제이다. 그래서 난쟁이 두명의 키를 뺀 값이 100이 되었을 때 값을 출력 해 주게끔 만들었다.

결과

//
// Created by 전시은 on 2023/03/08.
//
// 문제 :: 일곱 난쟁이
// 링크 :: https://www.acmicpc.net/problem/2309
// 입력 :: 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
// 출력 :: 일곱 난쟁이의 키를 오름차순으로 출력한다. 일곱 난쟁이를 찾을 수 없는 경우는 없다.

#include "../Problems.h"
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;


//int main()
int Solve2309()
{
    cout << "[디버깅용] Solve2309 :: 시작지점 >> \n";

    cin.tie(NULL);
    ios_base::sync_with_stdio(false);

    vector<int> vInputs;
    int nSum = 0;

    for(int i = 0; i < 9; i++)
    {
        int nInput;
        cin >> nInput;
        nSum += nInput;
        vInputs.push_back(nInput);
    }

    sort(vInputs.begin(), vInputs.end());

    for(int i = 0; i < 8; i++)
    {
        for(int j = 0; j < 9; j++)
        {
            if(nSum - vInputs[i] - vInputs[j] == 100)
            {
                for(int k = 0; k < 9; k++)
                {
                    if(k == i || k == j)
                    {
                        continue;
                    }
                    cout << vInputs[k] << "\n";
                }
                return 0;
            }
        }
    }

    return 0;
}
profile
취미 다이소

0개의 댓글