최대 1 분 소요

라이브러리를 이용한 순열

문제 정리

6-9의 수열 추측하기 문제를 itertools 라이브러리를 이용해 간단히 풀어보자!

입력

4 16

처리 과정

  1. 이항계수 리스트를 초기화한다.
  2. 라이브러리를 이용해 만들어진 순열의 각 원소와 이항계수 리스트의 각 원소를 일대일로 곱해 sum에 누적한다.
  3. sumf와 같다면 그때의 순열을 출력한다.

출력

3 1 2 4

풀이

import sys
import itertools as it # 순열,조합을 자동으로 구해주는 라이브러리
sys.stdin = open("./input/in9.txt", "rt") # 9번 예제 사용

n,f=map(int,input().split()) # 4 16
coef=[1]*n # 이항계수
for i in range(1,n):
    coef[i]=coef[i-1]*(n-i)/i # 이항계수 초기화

lst=list(range(1,n+1)) # 리스트에 1,2,3,4 초기화

# for tmp in it.permutations(lst): # 리스트의 모든 원소를 순열로
#     print(tmp)
# for tmp in it.permutations(lst,3): # 리스트에서 3개만 뽑아서 순열로 (4P3)
#     print(tmp)

for tmp in it.permutations(lst): 
    sum=0
    for i,x in enumerate(tmp):
        sum+=(x*coef[i])
    if sum==f:
        for x in tmp:
            print(x,end=' ')
        break # 가장 바깥쪽 for문 break

정리

  • 라이브러리를 사용하지 못하도록 막을 수 있기 때문에, 라이브러리에 의존하지 말자!


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기