파이썬으로 순열 경우의 수 구하기
Computer Science/python

파이썬으로 순열 경우의 수 구하기

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