알고리즘/BaekJoon

백준 2309 : 일곱 난쟁이

꾸준하게 :) 2020. 2. 24. 13:33

문제 링크입니다 https://www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

1. 입력받은 9명의 난쟁이들의 키를 모두 더해줍니다.

2. 난쟁이들의 키를 저장할 배열을 오름차순으로 정렬해줍니다.

3. 키들의 합이 100인 난쟁이 7명을 고르는 문제인데, 9명 중 2명을 고르고 남은 난쟁이들의 키의 합이 100인 경우를 찾는것과 동일하므로, 2중 for문을 통해 모든 키의 합에서 두 명의 키를 뺀 값이 100인 경우를 찾습니다.

4. 제일 먼저 찾은 경우를 출력하고 프로그램을 종료합니다.

 

 

[소스코드]

 

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
// [Brute Force] 백준(2309) : 일곱 난쟁이
 
#include<algorithm>
#include<cstdio>
using namespace std;
 
int n, num[9];
 
int main(void) {
 
    int sum = 0;
    for (int i = 0; i < 9; i++) {
        scanf("%d"&num[i]);
        sum += num[i];    // 주어진 키를 모두 더한 값을 저장
    }
    
    sort(num, num + 9);    // 주어진 키 정보 배열 오름차순 정렬
 
    // 9명의 난쟁이들의 모든 키에 대해
    for (int i = 0; i < 9; i++)
        for (int j = 0; j < 9; j++)
 
            // 전체 키들의 합에서 두명의 키를 뺀 값이 100이라면
            if (sum - num[i] - num[j] == 100) {
                for (int k = 0; k < 9; k++) {
 
                    // 그 두명을 제외한 나머지 키를 모두 출력합니다
                    if (k != i && k != j)
                        printf("%d\n", num[k]);
                }
                return 0;
            }
}
cs

 

'알고리즘 > BaekJoon' 카테고리의 다른 글

백준 9095 : 1, 2, 3 더하기(Recursion call)  (0) 2020.02.25
백준 1476 : 날짜 계산  (0) 2020.02.24
백준 17143 : 낚시왕  (0) 2020.02.23
백준 2178 : 미로 탐색  (0) 2020.02.22
백준 1748 : 수 이어 쓰기 1  (0) 2020.02.21