반응형
https://www.acmicpc.net/problem/2309
2309번: 일곱 난쟁이
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
www.acmicpc.net
from itertools import permutations
li = [ int(input()) for _ in range(9) ] # 9명의 난쟁이를 입력받아 리스트로 만드는 리스트 컴프리헨션
# 순열(permutations) 을 사용하여, 9요소의 리스트 중 7개를 뽑는 경우의 수 중에서,
for item in permutations(li, 7):
if sum(item) == 100: # 합이 100이 되면,
for x in sorted(list(item)): # 그 7 요소를 한줄에 하나씩 출력
print(x)
break
순열(permutations)과 조합(combinations)을 오랜만에 쓰니 itertools 에서 꺼내오는거 까먹어서 정리해서 올린다.
그리고 인강 들으면서 알게된 순열 안 쓰고 푸는 법
# 순열 안 쓰기
li = [ int(input()) for _ in range(9) ]
li.sort()
total = sum(li)
def main(): # 이중 for문 나오기 위해 함수로 바꾸고 return 이용.
for i in range(8):
for j in range(i + 1, 9):
if total - li[i] - li[j] == 100:
for k in range(9):
if i != k and j != k:
print(li[k])
return
main()
순열 안 쓴것도 신기하지만 이중 for문 나오는거 이렇게 하는 건 첨 알았다. flag 로 해왔는데 이것도 편한듯!
반응형
'알고리즘' 카테고리의 다른 글
[백준 파이썬 10815] 숫자 카드 (0) | 2023.01.10 |
---|---|
[백준 파이썬 2512] 예산 (0) | 2023.01.10 |
[백준 파이썬 1302] 베스트셀러 (0) | 2023.01.10 |
[백준 파이썬 11286] 절댓값 힙 (0) | 2023.01.10 |
[백준 파이썬 10844] 쉬운 계단 수 (실버 1) (0) | 2022.11.22 |