[21/10/01 KATA NINJA] permutations
복습 겸, 감 잡을겸 풀어보았다.
내 풀이
var permute = function(nums) {
return DFS([]);
function DFS(visited){
if(visited.length === nums.length) return [visited.map(i=>nums[i])];
const result = []
for(let check = 0;check<nums.length;check++){
// 방문이 완료된 인덱스는 유망하지 않으므로 가지치기.
if(!visited.includes(check)){
// 방문이 안된 인덱스만 방문한다.
result.push(...DFS([...visited,check]));
}
}
return result;
}
};
또 다른 풀이
array의 내장함수를 이용하면 더 빠르게 풀 수 있다.
/**
* @param {number[]} nums
* @return {number[][]}
*/
var permute = function(nums) {
const finish = nums.length;
return DFS([],[...nums]);
function DFS(stack,nums){
if(stack.length === finish){
return [stack]
}
const result = [];
for(let i=0;i<nums.length;i++){
const data = [...nums];
// 넣을 데이터는 배열에서 제외시켜버린다.
data.splice(i,1);
// 다음 배열은 넣은 데이터가 삭제된 배열에서 하나를 뽑는 것임.
result.push(...DFS([...stack,nums[i]],data));
}
return result;
}
};
?
다음 코드를
return DFS([],[...nums]);
아래 코드로 변경하면
return DFS([],nums);
속도가 더 느리다.
why...? 조회하는데 시간이 더 걸려서 인건가..?
아는 사람이 있다면 댓글로 부탁드림미다...
Author And Source
이 문제에 관하여([21/10/01 KATA NINJA] permutations), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rat8397/211001-KATA-NINJA-permutations저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)