리트코드) 46.순열(자바)
https://leetcode.com/problems/permutations/
문제 : 서로 다른 정수를 입력받아 가능한 모든 순열을 리턴하라
입력 : [1, 2, 3]
출력 : [[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]
class Solution {
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
dfs(result, 0, nums);
return result;
}
public void dfs(List<List<Integer>> result, int start, int[] nums) {
if(start == nums.length) {
List<Integer> temp = new ArrayList<Integer>();
for(int num : nums) {
temp.add(num);
}
result.add(temp);
return;
}
for(int i=start; i<nums.length; i++) { // start부터 시작
swap(i, start, nums);
dfs(result, start+1, nums);
swap(i, start, nums);
}
}
public void swap(int i, int j, int[] nums) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
- 순서를 바꿔주며 돌린다.