https://leetcode.com/problems/permutations/
입력값 : 서로 다른 정수를 입력받는다.
출력값 : 가능한 모든 순열을 리턴한다.
예시)
Input: nums = [1,2,3]
Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
<aside> 💡 순열 문제는 코딩테스트에 자주 나오는 문제로 꼭 알아두면 좋다고한다.일단 이문제는 혼자 해결하지 못했다. 아직까지도 재귀함수를 작성하는데 어려움이 많다.
</aside>
재귀방식으로 풀이한다.
다음값 (next), 이전값 (prev)를 지정해서 트리의 끝까지 향해간다.
종료 조건은 트리의 끝에 다다를 경우 즉, 재귀함수로 넘겨받는 인자가 없을때이다.
dfs방식으로 반복한다.
def dfs(elements):
# 넘겨받은게 없으면 이전값을 결과값에 넣기
if len(elements) == 0:
results.append(prev_elements[:])
for e in elements:
next_elements = elements[:]
next_elements.remove(e)
prev_elements.append(e)
dfs(next_elements)
prev_elements.pop()