ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 2309 - 일곱난쟁이
    백준 algorithm 2020. 5. 16. 00:56

    문제 설명 

     

     

     

     

    => Brute Force 문제이다. 

    => 모든 경우의 수를 탐색해보면 알 수 있다. 

     

     

     

     

     

    알고리즘은 아래와 같다. 

     

    • 배열을 입력받으며, 전체 난쟁이(9명)들 키의 합을 구한다.(sum)

    • 배열을 sort 시킨다.

    • STL을 써도 무방한다. ( 이 경우, 배열의 크기 또한 정해져 있다.)

    • 해당 배열을 i가 index 0부터 9까지 탐색한다, j는 i+1부터 9까지 탐색한다.

    • i, j index 값을 sum에서 뺏을 때, 100이 되는 i와 j를 구한다.

    => 위의 방법을 통해 제외되는 두 명의 난쟁이를 구할 수 있다. 

     

     

     

     

     

    *** 본인은 원하는 난쟁이를 구한 경우, 프로그램을 끝내지 않고, 모든 경우의 수를 탐색하도록 하여 여러 번 틀렸었다. 

    *** 원하는 i와 j를 찾았을 경우, 프로그램을 중지시켜주는 것이 정답을 맞혀주는 길이며, 효율성을 올릴 수 있는 방법이다.

     

     

     

     

     

     

     

     

    <code>

    #include <iostream>
    #include <algorithm>
    
    
    using namespace std;
    
    int main()
    {
        
        ios_base::sync_with_stdio(false);
        cin.tie(nullptr);
        cout.tie(nullptr);
        
        int arr[9];
        int sum=0;
        
        for(int i=0; i<9; i++)
        {
            cin >> arr[i];
            sum += arr[i];
        }
        
        sort(arr, arr+9);
        for(int i=0; i<9; i++)
        {
            for(int j= i+1; j<9; j++)
            {
                if(sum - arr[i] - arr[j] == 100)
                {
                    for(int k=0; k<9; k++)
                    {
                        if(k !=i && k != j)
                        {
                            cout << arr[k]<<'\n';;
                        }
                    }
                    return 0;
                }
            }
        }
        
        return 0;
    }
    

     

     

     

    실행화면 1
    실행화면 2

     

    '백준 algorithm' 카테고리의 다른 글

    백준 1476 - 날짜 계산  (0) 2020.06.01
    백준 3085 - 사탕 게임  (0) 2020.05.31
    백준 11053 - 가장 긴 증가하는 부분 수열  (0) 2020.05.09
    백준 2193 - 이친수  (0) 2020.04.23
    백준 15990 - 1, 2, 3 더하기 5  (0) 2020.04.23

    댓글

Designed by Who.