프로그래밍/알고리즘

BOJ 2309 · 일곱 난쟁이

반응형


알고리즘 분류 : 브루트 포스  


난쟁이 9명 중 7명 키의 합이 100이 되는 것을 찾는 간단한 문제다. 9명 중 2명을 빼서 100을 찾는다고 생각하면 더 쉽다.


  • 9명의 키를 입력받으면서 모두 더한다. 입력이 끝나면 정렬한다.
  • 모두 더한 값에서 2명을 빼서 100이 되는 값을 찾는다.
  • 2명을 제외하고 순서대로 출력한다.




C++ 소스코드


#include <cstdio>
#include <algorithm>

const int N = 9;
int a[N], sum;

void solve() {
    std::sort(a, a+N);
    for (int i=0; i<N; i++) {
        for (int j=i+1; j<N; j++) {
            if (sum-a[i]-a[j] == 100) {
                for (int k=0; k<N; k++) {
                    if (k != i && k != j) {
                        printf("%d\n", a[k]);
                    }
                }
                return;
            }
        }
    }
}

int main() {
    for (int i=0; i<N; i++) {
        scanf("%d", &a[i]);
        sum += a[i];
    }
    solve();
    return 0;
}




Python 3 소스코드


from sys import stdin
input = stdin.readline

N = 9
a = sorted([int(input()) for _ in range(N)])

def solve():
    for i in range(N):
        for j in range(i+1, N):
            if sum(a)-a[i]-a[j] == 100:
                for k in range(N):
                    if k != i and k != j:
                        print(a[k])
                return

solve()




참고



반응형