오늘 배운 것: 순열

문제 설명



고유한 정수 배열을 받은 다음 순서가 지정되지 않은 모든 순열의 배열을 반환하는 함수를 작성하십시오.

샘플 입력



array = [1, 2, 3]

샘플 결과



[
    [1, 2, 3],
    [1, 3, 2],
    [2, 1, 3],
    [2, 3, 1],
    [3, 1, 2],
    [3, 2, 1]
]

코드 #1



def get_permutations(array):
    permutations = []
    helper(0, array, permutations)
    return permutations


def helper(i, array, permutations):
    if i == len(array) - 1:
        permutations.append(list(array))
    else:
        for j in range(i, len(array)):
            swap(array, i, j)
            helper(i + 1, array, permutations)
            swap(array, i, j)


def swap(array, i, j):
    array[i], array[j] = array[j], array[i]


메모


  • 가정: 입력 배열이 비어 있으면 빈 배열을 반환합니다.
  • 순열을 그래프로 생각해 보십시오.
  • TODO: 반복적인 접근을 시도하십시오.

  • 크레딧


  • 문제 진술에 대한 Algoexpert.
  • 표지 이미지의 Jean-Louis Paulin( https://unsplash.com/photos/lHwmE58fW4Y ).
  • 좋은 웹페이지 즐겨찾기