반응형

C문제 링크

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

 

풀이 ) 완전 탐색

 

  일곱 난쟁이의 키의 합이 100이므로 전체 9명의 합을 tot라고 했을 때

완전탐색을 통해서 2명의 합이 tot-100인 조합을 찾는 문제이다.

 

정렬은 sort()를 사용했다.

 

#include <cstdio>	// scanf(), printf()
#include <algorithm>	// sort()
using namespace std;

int main(void)
{
    int arr[10] = {0, }, tot = 0;

    for(int i = 0; i < 9; ++i){
        scanf("%d", arr+i);
        tot += arr[i];
    }
    sort(arr, arr+9);

    int flag = 0;
    for(int i = 0; i < 8; ++i){
        for(int j = i; j < 9; ++j){
            if (arr[i]+arr[j] == tot-100){
                arr[i] = 0;
                arr[j] = 0;
                flag++;
                break;
            }
        }
        if(flag)
            break;
    }
    for(int i= 0; i < 9; ++i)
        if(arr[i])
            printf("%d\n", arr[i]);
}

 

반응형

+ Recent posts