본문 바로가기
알고리즘 문제/Leetcode

[leetcode][46] Permutations

by 햄과함께 2019. 12. 23.
320x100

문제 : https://leetcode.com/problems/permutations/


고유한 정수 모음의 가능한 모든 순열을 구해서 반환하는 문제.

 

백트래킹으로도 풀 수 있지만 이번에는 반복문으로 풀어보았다.

[1, 2, 3] 이 입력으로 주어질때

[] -> [1] -> [1,2] [2,1] -> [1,2,3] [1,3,2] [3,1,2] [2,1,3] [2,3,1] [3,2,1]

위와 같이 배열을 만들어나간다.

[1,2] [2,1] -> [1,2,3] [1,3,2] [3,1,2] [2,1,3] [2,3,1] [3,2,1] 을 만드는 과정을 자세히 보면

[1,2] -> [1,2,3] [1,3,2] [3,1,2]  / [2,1] -> [2,1,3] [2,3,1] [3,2,1] 이렇게 두가지 리스트 결과를 합친 결과이다.

이 중 [1,2]에 3을 추가하는 것을 다시 자세히 알아보자.

이전에 만들었던 배열([1,2], [2,1])들을 탐색하면서 탐색 중인 배열에 현재 추가하고자 하는 정수(addNum, 3)을 사이사이에 끼워넣으면서 새로운 수열을 만든다.

[1, 2] 배열에서 3이 추가될 수 있는 위치는 [ v  1, 2 ], [ 1,  v  2 ], [ 1, 2  v  ] 와 같이 총 3군데이고 여기에 3을 추가해서 새로운 배열을 만든다.

이를 nums의 모든 원소를 돌면서 반복한다.


소스코드 : https://github.com/fpdjsns/Algorithm/blob/master/leetcode/medium/46.%20Permutations.py


Today's Python

# list[ind] = ele 
for ind, ele in enumerate(list): 

enumerate(list) : 인덱스 번호와 리스트 원소를 튜플로 반환한다.

320x100

댓글