https://www.acmicpc.net/problem/2309
2309번: 일곱 난쟁이
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
www.acmicpc.net
📝 알고리즘
들어오는 순서에 상관없이 숫자 7개의 합을 100으로 맞춰야 하기 때문에 파이썬 itertools의 combinations를 사용했다. 알고리즘은 잘 생각했는데 출력물이 깔끔하지 않아서 아쉬웠다. 당장 생각나는 게 이 코드여서 제출을 하고, 다른 사람의 코드를 보니 sorted를 for문의 반복횟수로 지정해주었다. 파이썬 for문은 어떤 시퀀스(sequence)를 반복하는 문법이므로 sorted가 반복횟수가 될 수 있는 것이다.
💻 최종 코드
from itertools import combinations as comb
t = []
h = 0
for _ in range(9):
t.append(int(input()))
for i in comb(t,7):
if sum(i) == 100:
i = list(i)
i.sort()
for j in i:
print(j)
break
💡 참고한 코드
import itertools
stature = []
for _ in range(9):
stature.append(int(input()))
for i in itertools.combinations(stature,7):
if sum(i) == 100:
for j in sorted(i):
print(j)
break
* 백준 사이트 hyen1553님의 코드를 참고하였습니다.
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 2789번 : 유학 금지 (0) | 2023.01.27 |
---|---|
[백준/python] #4949 균형잡힌 세상 (0) | 2023.01.26 |
[백준/python] 2596번 : 비밀편지 (0) | 2023.01.25 |
[백준/python] 17502번 : 클레어와 팰린드롬 (0) | 2023.01.24 |
[백준 / python] #11652 카드 (0) | 2023.01.24 |