더북(TheBook)

코드 1-5 permutation.py

def permutation(arr, start):
   if len(arr)-1 == start:
       print(arr)
       return
    for idx in range(start, len(arr)): 
       arr[start], arr[idx] = arr[idx], arr[start]
       permutation(arr, start+1)
        arr[start], arr[idx] = arr[idx], arr[start] 
if __name__ == "__main__":
    arr = [1, 2, 3]
    permutation(arr, 0)

집합으로 쓸 리스트

집합의 시작 위치이며, start 이전 리스트 요소는 집합의 원소가 아닙니다.

기저 사례: start가 집합의 마지막 원소에 도달했을 때 섞을 다른 원소가 없으므로 완성된 순열을 출력합니다.

집합의 첫 번째 원소

idx로 집합의 모든 원소를 순회하면서 start와 idx의 원소를 바꾼 후

집합 크기를 줄여서, 다시 말해 start를 한 칸 움직여서 다시 재귀 함수를 호출합니다.

다시 자신의 스택 프레임으로 돌아왔다면 이전에 바꾸어 놓았던 원소를 다시 원래대로 돌려놓습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.