순열은 n!으로 표현되기도 하며, 함수를 직접만들거나 라이브러리를 사용할 수 있다.
1-1) for문 구현
import sys
def perm(a:list,n:int):
for i in range(1,n+1): #n만큼 for문이 필요함.
for j in range(1,n+1):
if(i!=j):
for k in range(1,n+1):
if(i!=k and j!=k):
for m in range(1,n+1):
if(i!=m and j!=m and k!=m): #n-1만큼 조건이 필요함
print(i,j,k,m)
a = [1,2,3,4]
n = len(a)
perm(a,n)
1-2) 재귀 구현
import sys
cnt =0
#n은 원소의 개수
#k는 현재까지 선택된 원소의 수
def perm(n:int,k:int):
global a
if(n==k):
print(a)
cnt+=1
return
for i in range(n):
a[i],a[k]=a[k],a[i] #바꾸고
perm(n,k+1) #바꾼상태로 재귀
a[i],a[k]=a[k],a[i] #되돌리기
a = [1,2,3,4]
cnt=0
n,k = 4,1
perm(n,k)
1-3) 라이브러리 구현
import itertools
a = [1,2,3,4]
a_permutaion = list(itertools.permutations(a,4)) # a의 원소로 4개의 원소를가진 순열생성
print(a_permutaion)
'개발 > Python' 카테고리의 다른 글
python itertools product (0) | 2019.03.24 |
---|---|
python 조합 (0) | 2019.03.24 |
python 유효범위 (0) | 2019.03.24 |
python join함수 (0) | 2019.03.24 |
python Swap (0) | 2019.03.24 |