<--- 리트코드 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 |
'Python' 카테고리의 다른 글
파이썬 알고리즘 인터뷰 - 36. 조합의 합 (0) | 2022.01.30 |
---|---|
파이썬 알고리즘 인터뷰 - 35. 조합 (0) | 2022.01.30 |
파이썬 알고리즘 인터뷰 - 33. 전화 번호 문자 조합 (0) | 2022.01.30 |
파이썬 알고리즘 인터뷰 - 32. 섬의 개수 (0) | 2022.01.29 |
파이썬 알고리즘 인터뷰 - 31. 상위 K 빈도 요소 (0) | 2022.01.27 |