[Python-CodingTest] 6-12. 라이브러리를 이용한 순열 (With 6-9. 수열 추측하기)
라이브러리를 이용한 순열
문제 정리
6-9
의 수열 추측하기 문제를 itertools
라이브러리를 이용해 간단히 풀어보자!
입력
4 16
처리 과정
- 이항계수 리스트를 초기화한다.
- 라이브러리를 이용해 만들어진 순열의 각 원소와 이항계수 리스트의 각 원소를 일대일로 곱해
sum
에 누적한다. sum
이f
와 같다면 그때의 순열을 출력한다.
출력
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
정리
- 라이브러리를 사용하지 못하도록 막을 수 있기 때문에, 라이브러리에 의존하지 말자!
💛 개인 공부 기록용 블로그입니다. 👻