#99. [백준_C언어] 2309 : 일곱 난쟁이 \ 브루트포스 알고리즘

 

입력 코드

#include <stdio.h>
 
int height[7];
int input[9];
int flag;
 
void combination(int sum, int cnt, int idx){        
    if(cnt == 7){        
        if(sum == 100){
            flag = 1;
            return;
        }
        else{
            return;
        }
    }
    
    for(int i = idx; i < 9; i++){
        height[cnt] = input[i];
        combination(sum + height[cnt], cnt+1, i+1);
        
        if(flag == 1){
            return;
        }
    }
}
 
int main(void){
//    freopen("B2309_input.txt", "r", stdin);
    
    for(int i = 0; i < 9; i++){
        scanf("%d", &input[i]);
    }
    
    combination(0, 0, 0);
    
    // 버블 정렬 -> 오름차순 출력을 위해 
    for(int i = 6; i > 0; i--){
        for(int j = 0; j < i; j++){
            if(height[j] > height[j+1]){
                int temp = height[j];
                height[j] = height[j+1];
                height[j+1] = temp;
            }
        }
    }
    
    for(int i = 0; i < 7; i++){
        printf("%d\n", height[i]);
    }
    
    return 0;
}

 

코드 설명

#브루트포스 알고리즘

 

 

참고

coding-insider.tistory.com/entry/%EB%B0%B1%EC%A4%80-2309-%EC%9D%BC%EA%B3%B1-%EB%82%9C%EC%9F%81%EC%9D%B4-C

 

[백준 2309] 일곱 난쟁이 (조합) (C/C++)

#include int height[7]; int input[9]; int flag; void combination(int sum, int cnt, int idx) {            if(cnt == 7)     {                if(sum == 100)..

coding-insider.tistory.com

 

 

 

문제 출처

www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

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

www.acmicpc.net