찬란하게

[알고리즘][python]조합, sep, 언팩킹, sorted(),백준 2309, 일곱난쟁이 본문

알고리즘

[알고리즘][python]조합, sep, 언팩킹, sorted(),백준 2309, 일곱난쟁이

체리핫 2021. 3. 28. 21:06

문제 설명

 

일곱 난쟁이 문제 :

9명의 일곱난쟁이 키가 주어지고,

그중에 키의 합이 100이 되는 7명을 골라내야 한다.

풀이 과정

1. 입력

여러 줄로 값을 입력받는다.

9명의 키를 n_list에 저장한다.

 

2. 알고리즘

1) 조합 -> combinations

h_list = list(combinations(n_list, 7))

2) 9C7의 조합을 구한 뒤에 합이 100이 되는 경우 break문으로 끝낸다.

 

3. 출력

1) print함수의 옵션 sep값을 통해 나눠서 출력한다.

2) 언팩킹 -> *을 통해서 print의 포장을 풀어준다.

3) 오름차순 정렬 -> sorted()

# 라이브러리
from itertools import combinations
# 입력
n_list = [int(input()) for _ in range(9)]
# 조합 덧셈 알고리즘
h_list = list(combinations(n_list, 7))
for i in range(len(h_list)):
    if sum(h_list[i]) == 100:
        print(*sorted(list(h_list[i])), sep='\n')
        break

 

*** Combinations를 사용하지 않고 풀어보기!