Python으로 순열을 구현해 보았다. swap을 활용한 정통 알고리즘에 비하면 매우 비효율적일 것이다. 그냥 내가 머리속에 이해하고 있는 순열의 개념을 생각나는대로 손가는대로 코딩해본거니 재미로만 보시길...


#!/usr/bin/env python3


def permutate(arr, r, prefix=None, result=None):
    assert len(arr) >= r
    if prefix is None:
        prefix = []
    if result is None:
        result = []
    if r < 1:
        result.append(prefix)
        return
    for i in range(len(arr)):
        new_prefix = prefix + [arr[i]]
        remain = arr[:i] + arr[i+1:]
        permutate(remain, r-1, new_prefix, result)
    return result


# 테스트 출력
arr = [1, 2, 3, 4]
result = permutate(arr, 4)
for item in result:
    print(item)