<aside> 💡 순열 링크
</aside>
<aside> 💡 서로 다른 정수를 입력받아 가능한 모든 순열을 리턴하라!
</aside>
예시)
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> 💡 저번 문제와 비슷하게 어떤식으로 dfs탐색을 해야할지 아이디어가 안떠오른다..
</aside>
<aside> 💡 1. 입력값을 토대로 반복을 진행한다.
<aside> 💡 1. 결과값과 이전값을 저장할 리스트를 생성해주고 입력값을 dfs함수에 전달하여 실행한다.
</aside>
def permute(nums):
results = []
prev_elements = []
dfs(nums)
return results
<aside> 💡 2. 인자인 elements가 아무 값이 없으면 결과에 추가시킨다.
다음 코드에서 알아보겠지만 반복문을 돌며 다음값을 줄여나가는 식으로 반복한다.
</aside>
<aside> 🔥 여기서 중요한점이 prev_elements[:]로 결과값을 추가했다는 점이다.
파이썬은 모든 객체를 참조하는 형태로 처리되기 때문에 [:]를 하지 않으면 결과 값이 추가되는게 아니라
prev_elements에 대한 참조가 추가되어 참조된 값이 변경될 경우 같이 바뀌어 버리게 된다.
</aside>
def dfs(elements):
if len(elements) == 0:
results.append(prev_elements[:])