Menu
CoddyTech

Permutations

보통백트래킹python iconjava iconcpp iconc iconjs icon+10

서로 다른 정수로 이루어진 목록 nums가 주어집니다. 각 값이 정확히 한 번씩 사용된 목록인 모든 순열을 반환하세요. 값이 n개라면 순열은 n!개입니다. 사전순으로 나열하세요. 두 순열을 위치별로 비교하고 처음으로 다른 위치의 값으로 순서를 정합니다. [1, 2, 3]의 경우 [1, 2, 3]이 가장 먼저 오고 [3, 2, 1]이 마지막에 옵니다.

함수

permute(nums: integer-array) → integer-2d-array
numsinteger-array
값은 모두 서로 다르며, 순서는 상관없습니다
반환값integer-2d-array
값의 모든 순서를 사전식 순서로 나열

제약 조건

  • 1 ≤ nums.length ≤ 6
  • -10 ≤ nums[i] ≤ 10
  • nums의 모든 값은 서로 다릅니다.
  • nums는 어떤 순서로든 올 수 있습니다.

예제

입력
nums = [3, 1, 2]
출력
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
설명
세 개의 값은 3! = 6개의 순서가 있습니다. 정렬하면 값은 1, 2, 3이므로 1로 시작하는 순서가 먼저 오고, 두 번째 위치에서 2가 3보다 작기 때문에 [1, 2, 3]이 [1, 3, 2]보다 먼저 옵니다. 입력의 순서는 중요하지 않습니다.

lock icon제출 시 숨은 테스트 +13개

challenge icon

후속 질문

주어진 순서가 있을 때, O(n) 시간과 O(1)의 추가 공간으로 제자리에서 사전식 순서의 다음 순서를 만들어 낼 수 있나요?

코드 초기화
def permute(nums):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

nums = [3, 1, 2]

기대값

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