본문 바로가기
Algorithm/백준 BOJ

[백준] [Python] #2309 일곱 난쟁이

by 은세라 2021. 9. 24.

https://www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

보자마자 앗 이거 9개 중 7개 permutation하면 되자나~ 이러면서 신나게 제출했는데...

import itertools

arr = []
for _ in range(9):
    arr.append(int(input()))

nPr = itertools.permutations(arr, 7)
for n in nPr:
    if sum(n) <= 100: 
        print(sorted(list(n)))
        break

ㅠㅜㅠ아니 너무 단호하자나ㅠㅜㅠㅜㅠ

분명 로직에는 문제가 없을텐데 하고 찾아보니 이런 출력을 list로 해버리면 안되는 거였네...?

역시 코드는 틀리지 않습니다 틀리는건 나에요...

 

import itertools

arr = []
for _ in range(9):
    arr.append(int(input()))

nPr = itertools.permutations(arr, 7)
for n in nPr:
    if sum(n) == 100: 
        arr = sorted(list(n))
        break
print(*arr, sep="\n")

그래서 수정했더니 바로 통과되었다 *^^*

 

그리고 수정하면서 알게 된 하나의 cool한 표기법

print(*arr, sep="\n")

저 print문에 *을 넣으면 for _ in range(len(arr))과 같은 효과를 준다!! 

그리고 무려 중간에 구분기호를 뭐로 할건지도 정할 수 있다!! ✧٩(ˊωˋ*)و✧

 


웹서핑 하다가 찾게된 코드인데 오호 permutation안써도 되네?! 이게 더 좋은가?! 하고 봤더니

무려 3중 for문이라 그냥 참고 링크만 남기겠다...

 

오늘의 교훈 : 쓰라고 만들어둔 라이브러리는 개꿀이고 내가 머리쓴거보다 나을테니 그냥 쓰자

 

참고 : https://yongku.tistory.com/entry/%EB%B0%B1%EC%A4%80-2309%EB%B2%88-%EC%9D%BC%EA%B3%B1-%EB%82%9C%EC%9F%81%EC%9D%B4-%ED%8C%8C%EC%9D%B4%EC%8D%ACPython

댓글