본문 바로가기
백준

[백준] 2309번 : 일곱 난쟁이 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 8. 4.
728x90
반응형

 

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

해당 문제는 9명 중 일곱 난쟁이가 될 수 있는 모든 경우를 구하고 각 경우마다 키의 합이 100이 되는지 확인하면 해결할 수 있다.

 

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 조합 함수인 combinations() 함수를 사용하기 위해 combinations 모듈을 불러온다. from itertools import combinations
  3. 난쟁이들의 키를 저장할 리스트를 생성한다. li = list()
  4. 9명의 난쟁이들의 키를 입력받아 저장한다. for _ in range(9): li.append(int(sys.stdin.readline()))
  5. 난쟁이들의 키를 오름차순으로 정렬해 조합을 선택하고 옳은 결과를 출력할 때 정렬을 다시 하지 않을 수 있도록 한다. li.sort()
  6. 가능한 일곱 난쟁이들의 조합을 생성하여 저장한다. result = list(combinations(li, 7))
  7. 생성한 조합을 하나씩 추출하여 for i in result
  8. 만약 일곱 난쟁이의 키 합이 100이면 if (sum(i) == 100)
  9. 각 난쟁이들의 키를 출력하고 for j in i: print(j)
  10. 일곱 난쟁이를 찾았으므로 종료한다. break
반응형

3. 소스코드

import sys
from itertools import combinations

li = list()
for _ in range(9):
    li.append(int(sys.stdin.readline()))
    
li.sort()
result = list(combinations(li, 7))
for i in result:
    if (sum(i) == 100):
        for j in i:
            print(j)

        break
728x90
반응형