문제 : 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) : 인덱스 번호와 리스트 원소를 튜플로 반환한다.
'알고리즘 문제 > Leetcode' 카테고리의 다른 글
[leetcode][1288] Remove Covered Intervals (0) | 2020.01.25 |
---|---|
[leetcode][334] Increasing Triplet Subsequence (0) | 2020.01.02 |
[leetcode][719] Find K-th Smallest Pair Distance (0) | 2019.12.21 |
[leetcode][140] Word Break II (0) | 2019.12.19 |
[leetcode][979] Distribute Coins in Binary Tree (0) | 2019.12.17 |
댓글