본문 바로가기

Algorithm 문제 풀이/python

[python] 백준 2309번 일곱 난쟁이

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

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

 


💻 코드

 

import sys

input = sys.stdin.readline

dwarf = [int(input()) for _ in range(9)]
temp1, temp2 = 0, 0

for i in range(9):
    for j in range(i + 1, 9):
        if sum(dwarf) - (dwarf[i] + dwarf[j]) == 100:
            temp1 = dwarf[i]
            temp2 = dwarf[j]

dwarf.remove(temp1)
dwarf.remove(temp2)

print('\n'.join(map(str, sorted(dwarf))))

 

 

📝 풀이

 

 

이 문제는 브루트 포스(Brute Force) 문제로 모든 경우의 수를 하나씩 탐색하면서 대입해보는 방식으로 풀 수 있다.

9명의 난쟁이 중에서 합이 100인 7명의 난쟁이를 출력해야 하므로 2명의 난쟁이만 빼면 100이 되는 경우를 찾으면 된다. 2명의 난쟁이를 찾는 방법은 이중 for문을 이용하여 리스트에서 2개씩 모든 경우의 수를 대입해보는 것이다.