본문 바로가기

백준문제풀이

[백준 문제풀이] 2309번 : 일곱 난쟁이

https://www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

💡 브루트포스

완전탐색을 의미하며 모든 경우의 수를 다해보는 방법을 의미한다.

 

✔구현 과정

1. 가능한 모든 가지수를 계산해본다.(입력, 출력 제한이 중요)

2. 어떤 식으로 구현할지 생각한다.(단순 for문 / 순열/ 재귀(백트래킹) 등)

 

 

✔구현방식 :

아홉 명의 난쟁이 중 두 난쟁이를 제외해야 100이 되므로 전제 난쟁이의 합에서 2명을 뺀 값이 100이되도록 하는 두 난쟁이를 구한다.

처음부터 9번째까지 두명을 선택하도록 만들었다.

 

✔소스코드 : 

h = []
for i in range(9):
    h.append(int(input()))
total = sum(h)
a = 0
b = 0
for i in range(8):
    for j in range(i + 1, 9):
        if total - (h[i] + h[j]) == 100:
            a = h[i]
            b = h[j]
h.remove(a)
h.remove(b)
h.sort()
for i in h:
    print(i)