Koala - 9기/기초 알고리즘 스터디

[백준/python] 2309 일곱 난쟁이

sebinChu 2023. 1. 26. 00:21

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님의 코드를 참고하였습니다.