코드 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를 한 칸 움직여서 다시 재귀 함수를 호출합니다.
➐ 다시 자신의 스택 프레임으로 돌아왔다면 이전에 바꾸어 놓았던 원소를 다시 원래대로 돌려놓습니다.