CodingTest/Content

백준 2309번 일곱난쟁이 풀이 및 정답(python)

코딩손 2025. 2. 8. 13:52


7명의 난쟁이 합이 100이 되는 경우를 찾고 하나씩 출력하는 문제이며,

7중 for문을 쓰면 귀찮은 방법이 되기 때문에 두 가지 방법을 제시할 수 있습니다.

 

1. 2명 합만 찾는 법

-> 9명의 난쟁이 합을 구한다.

-> 2명을 제외 시켜 나머지 7명 합이 100되는 경우를 찾는다.

-> 해당되는 7명을 정렬하여 한명씩 출력한다.

 

2. 내장함수 combinations를 통한 방법

-> combinations를 통해 7명 합이 100이 되는 경우를 찾는다

-> 해당되는 7명을 정렬하여 한명씩 출력한다. 

 

from itertools import combinations

#입력
heights = [int(input()) for _ in range(9)]

# 7명 합이 100인 경우 찾고 하나씩 출력
for seven_h in combinations(heights, 7):
    if sum(seven_h) == 100:
        for h in sorted(seven_h):
            print(h)
        break