본문 바로가기

코딩/Python

[Python] 백준 2309 일곱 난쟁이

반응형

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

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

 

코드 작성

arr = []
for _ in range(9):
    arr.append(int(input()))
arr.sort()
for i in range(9):
    for j in range(i+1, 9):
        if sum(arr)-arr[i]-arr[j] == 100:
            for k in range(9):
                if k == i or k == j:
                    continue
                else:
                    print(arr[k])
            exit()

코드  풀이

#1. 문제이해

브루트포스에서 무차별 대입하여 정답을 찾기 위한 방법 중

일곱난쟁이의 문제는 사람이 9명, 난쟁이 7명을 찾는 문제이다.

방법을 적게 하기 위해서 7명을 찾는 것보다, 2명을 찾아 제외하는 방법이 더 빠르다. 그러기 위해 for문을 2번 사용하여 아닌 사람을 찾았고, 제외해 주었다.

 

#2. exit

정답을 찾았으면 for문을 빠져나와야 하는데 여러개 있으므로 전체 프로그램 종료를 하기 위해 break가 아닌 exit을 사용하였다.

 

반응형