1) 라이브러리 없이 재귀로 코딩
#순열, Permutation
: 순열이란 서로 다른 N개의 수중에 R개를 뽑아 일렬로 배열하는 경우의 수이다.
-> 파이썬으로 코딩한 순열 출력 방법
def permutation(arr, n):
result = []
if n == 0:
return [[]]
for i, elem in enumerate(arr):
for PermResult in permutation(arr[:i] + arr[i + 1:], n - 1):
result += [[elem] + PermResult]
return result
arr = [1, 2]
print(permutation(arr, 2))
=> 위의 그림을 통해 우리는 Permutation([1,2],2)=[[2,1],[1,2]] 가 출력됨을 알 수 있다. 이를 바탕으로 Permutation([1,2,3],3)가 어떻게 출력되는지 과정을 확인해보자.
for i,elem in enumeration
#first loop: i=0,elem=1
for perm in permutation([2,3],2)
#여기서 우리는 앞의 결과를 통해 permutation[2,3]=[[2,3],[3,2]]임을 알수 있다.
#따라서 순서대로 위 순열의 결과값에 elem값을 더해주면 된다.
result+=[[elem]+perm]]
#i=0, elem=1 실행 결과: [[1]+[2,3],[1]+[3,2]]=[[1,2,3],[3,2,1]]
#이 이후로 순서대로 loop을 모두 실행하면 순열의 모든 경우의 수를 찾을 수 있다.
2) 라이브러리를 사용한 방법
: Library itertools를 사용한다. 완전 쉬움..
from itertools import permutations
arr=[1,2,3]
print(list(permutations(arr,3))
-> 물론 라이브러리가 훨씬 빠르다고 하지만 없이 구현해보는것도 상당히 중요함!
'Computer Science > python' 카테고리의 다른 글
파이썬 문법 간단 정리 (0) | 2021.10.24 |
---|---|
Python에서의 Testing/Debugging (0) | 2021.10.24 |