<--- 리트코드 46. Permulations --->

# 문제: 서로 다른 정수를 입력받아 가능한 모든 순열을 리턴하라.

 

입력

[1,2,3]

출력

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

 

 

# 풀이

1. DFS를 활용한 순열 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def permute(nums):
  results = []
  prev_elements = []
 
  def dfs(elements):
    if len(elements) == 0:
      results.append(prev_elements[:])
      print(results)
 
    for e in elements:
      next_elements = elements[:]
      next_elements.remove(e)
 
      prev_elements.append(e)
      dfs(next_elements)
      prev_elements.pop()
 
  dfs(nums)
  return results
 
nums = [1,2,3]
print(permute(nums))
cs

 

2. itertools 모듈 사용

1
2
3
4
5
6
7
import itertools
 
def permute(nums):
  return list(itertools.permutations(nums))
 
nums = [1,2,3]
print(permute(nums))
cs