Notice
Recent Posts
Recent Comments
Link
archive
[백준] 일곱 난쟁이 (Python) 본문
✏️ 문제
2309번: 일곱 난쟁이
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
www.acmicpc.net
✏️ 풀이
아홉 명의 난쟁이 중 선택한 일곱 명의 키의 합이 100이 될 경우를 찾아야 한다.
9C7의 결과를 완전 탐색하며, 결과에 맞는 조합을 찾을 시 break한다.
조합들을 구하기 위해 itertools.combination()을 사용하였다.
동일한 방식으로, 9C2의 조합에 대해 탐색하며 모든 원소의 합에서 선택한 두 원소의 합을 빼는 방식으로 구현해도 된다.
( 참고 ↓ )
[파이썬] itertools모듈
리스트 조합 관련된 알고리즘 문제를 풀다 보면 itertools 라이브러리가 풀이에 종종 등장한다. 사실 처음 봤을 땐 라이브러리 사용법을 암기해서 쓰는 것보다 직접 구현하는 게 차라리 빠르겠다
seonyounggg.tistory.com
itertools를 사용하지 않는 경우에는 이중 포문으로 두가지 원소를 선택하면 된다.
✏️ 코드
import itertools
height = [int(input()) for _ in range(9)]
ans = []
for h in itertools.combinations(height, 7):
if sum(h) == 100:
ans = sorted(h)
break
for i in ans:
print(i)
✏️ 생각
itertools 모듈에 익숙해지니까 유용하게 쓰이는 것 같다!
'STUDY > 알고리즘' 카테고리의 다른 글
[백준] 사탕 게임 (Python) (0) | 2021.03.01 |
---|---|
[백준] 유레카 이론 (Python) (0) | 2021.03.01 |
[프로그래머스] 프린터 (Python) (0) | 2021.02.18 |
[leetCode] Longest Palindromic Substring (Python) (0) | 2021.02.07 |
[leetCode] Most Common Word (Python) (0) | 2021.02.02 |
Comments