본문 바로가기
알고리즘/브루트포스

2309 일곱 난장이

by tryotto 2020. 1. 12.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
 
int arr[10= { 0 };
int rst[10= { 0 };
 
void sorting() {
    for (int i = 1; i <= 7; i++) {
        int mini = 10000000, idx;
        for (int j = i; j <= 7; j++) {
            if (mini > rst[j]) {
                mini = rst[j];                
                idx = j;
            }
        }
        int tmp = rst[i];
        rst[i] = rst[idx];
        rst[idx] = tmp;
    }
}
 
void ans(int a, int b) {
    int idx = 1;
    for (int i = 1; i <= 9; i++) {
        if (i != a && i != b) {
            rst[idx++= arr[i];            
        }
    }
    sorting();
    
    for (int i = 1; i <= 7; i++) {
        printf("%d\n", rst[i]);
    }
}
 
int main() {
    int sum = 0;
    for (int i = 1; i <= 9; i++) {
        scanf("%d"&arr[i]);
        sum += arr[i];
    }
 
    int left = sum - 100;
    for (int i = 1; i <= 9; i++) {
        for (int j = i + 1; j <= 9; j++) {
            if (arr[i] + arr[j] == left) {
                ans(i, j);
                return 0;
            }
        }
    }
}
cs


복잡하게 생각하다가 방향을 바꿨다.

7명의 난장이들을 일일이 다 합을 구하기보다, 
다른 2 명의 난장이들의 합만 구하는 방식을 취했다.
이럴 경우, 이중 for문만 필요하기 때문에 시간복잡도나 코드 복잡도 면에서 훨씬 수월하다


'알고리즘 > 브루트포스' 카테고리의 다른 글

1182 부분수열의 합  (0) 2020.01.13
1748 수 이어쓰기1  (0) 2020.01.13
2231 분해합  (0) 2020.01.13
7568 덩치  (0) 2020.01.13
1065 한수  (0) 2020.01.12