본문 바로가기
Programming Solve/BOJ

BOJ 3040 - 백설 공주와 일곱 난쟁이 / C++

by msm1029 2021. 8. 26.
반응형

문제 링크 : https://www.acmicpc.net/problem/3040

 

3040번: 백설 공주와 일곱 난쟁이

매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다.

www.acmicpc.net

 

문제 풀이

문제 설명을 그대로 풀어보면 '9개의 수 중에서 합이 100이 되도록 7개를 뽑아라'로 요약할 수 있다.

9C7은 9C2이므로 2명을 빼는 것이 빠를 거라 판단하여 9개의 수를 입력받아 total 변수에 모두 더해준다.

그 후 total 값에서 임의의 두 수를 빼서 100이 된다면 멈추고 인덱스(i, j)를 저장하여 해당 인덱스를 제외한 배열 값들을 모두 출력한다.

 

소스 코드

#include <iostream>
using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int arr[9];
    int i, j;
    int total = 0;
    bool flag = false;

    for(i=0; i<9; i++){
        cin >> arr[i];
        total += arr[i];
    }

    for(i=0; i<9; i++){
        for(j=0; j<9; j++){
            int tmp = total;
            if(i==j) continue;
            else{
                tmp = tmp - arr[i] - arr[j];
                if(tmp == 100){
                    flag = true;
                    break;
                }
            }
        }
        if(flag) break;
    }

    for(int k=0; k<9; k++){
        if(k == i || k == j) continue;
        cout << arr[k] << '\n';
    }
}
반응형

'Programming Solve > BOJ' 카테고리의 다른 글

BOJ 2810 컵홀더 / C++  (0) 2021.08.27
BOJ 2851 슈퍼 마리오 / C++  (0) 2021.08.27
BOJ 10815 숫자 카드 / C++  (0) 2021.07.16
BOJ 1541 잃어버린 괄호 / C++  (0) 2021.07.16
BOJ 1764 듣보잡 / C++  (0) 2021.07.16