알고리즘🅰/리트코드
[리트코드] 46. Permutations
개발조각
2022. 10. 9. 15:51
728x90
반응형
문제
https://leetcode.com/problems/permutations/
Permutations - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
이번 문제는 순열을 구하는 문제입니다.
해결방안
먼저 모든 숫자가 나올 수 있는 경우를 구하였습니다.
var permute = function(nums) {
let result = [];
permutations()
function permutations(arr=[]){
if(arr.length === nums.length){
result.push(arr);
return;
}
for(let i of nums){
permutations([...arr, i]);
}
}
return result
};
아래와 같은 예제가 있으면
Input: nums = [1,2,3]
return 값이 1, 2, 3으로 구성할 수 있는 모든 경우가 나옵니다.
[
[1,1,1],[1,1,2],[1,1,3],
[1,2,1],[1,2,2],[1,2,3],
[1,3,1],[1,3,2],[1,3,3],
[2,1,1],[2,1,2],[2,1,3],
[2,2,1],[2,2,2],[2,2,3],
[2,3,1],[2,3,2],[2,3,3],
[3,1,1],[3,1,2],[3,1,3],
[3,2,1],[3,2,2],[3,2,3],
[3,3,1],[3,3,2],[3,3,3]
]
저희는 같은값이 안 나오는 값만 골라주면 됩니다.
그래서 for문에 아래와 같은 코드를 더 작성해주었습니다.
if(!arr.includes(i)) permutations([...arr, i]);
그러면 arr에서 i값이 있으면 추가를 안 해주고 없으면 i를 추가해주면 됩니다.
소스코드
var permute = function(nums) {
let result = [];
permutations()
function permutations(arr=[]){
if(arr.length === nums.length){
result.push(arr);
return;
}
for(let i of nums){
if(!arr.includes(i)) permutations([...arr, i]);
}
}
return result
};


728x90
반응형