티스토리 뷰

문제 링크

일곱난쟁이

문제 요약

  • 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다.
  • 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
  • 일곱 난쟁이의 키를 오름차순으로 출력한다.
  • 일곱 난쟁이를 찾을 수 없는 경우는 없다.

브루트 포스

  • 정답을 찾을 때까지 반복문이 진행되므로 브루트 포스 문제이다.
  • 조건문과 반복문을 잘 짜주면 어렵지 않게 문제를 해결할 수 있다.

문제 해답


#include <iostream>
#include <algorithm>
using namespace std;
const int SIZE = 9; // 난쟁이의 수
const int Height = -100;

int main(void) {
    int arr[SIZE];  /* 난쟁이들의 키 */
    int fakeVal = Height; /* 난쟁이들의 키 - 100 */
    int buf;
    bool flag = false;

    for (int i = 0; i < SIZE; i++) {
        cin >> arr[i];
        fakeVal += arr[i];
    }

    for (int i = 0; i < SIZE - 1; i++) {
        buf = fakeVal - arr[i];
        if (buf <= 0) {
            continue;
        }
        for (int j = i + 1; j < SIZE; j++) {
            if (buf == arr[j]) {
                arr[i] = 0;
                arr[j] = 0;
                flag = true;
                break;
            }
        }
        if (flag)/* 2중 for문 탈출을 위한 flag */
            break;
    }

    sort(arr, arr+SIZE);
    for (int i = 2; i < SIZE; i++) {
        cout << arr[i] << endl;
    }
    return 0;
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함