자바스크립트 코딩테스트 '순열 구하기'
10이하의 N개의 자연수가 주어지면 이 중 M개를 뽑아 일렬로 나열하는 방법을 모두 출력하라.(중복X)
- 내 풀이 :
중복 제거가 되지 않았다. 어떻게 해야될지 모르는 상태...
function solution(m, arr){
let answer=[];
let n=arr.length;
let ch=Array.from({length:m},()=>0);
function DFS(L){
if(L===m){
answer.push(ch.slice());
}
else{
for(let i=0; i<=m; i++){
ch[L]=arr[i];
DFS(L+1);
}
}
}
DFS(0);
return answer;
}
let arr=[3, 6, 9];
console.log(solution(2, arr));
- 쌤 풀이 :
check배열을 만들어서 for문 안에 if문을 넣어 해당 배열값을 사용했다면 다음 인덱스에는 해당 배열값을 사용하지 못하게 만들었다.
function solution(m, arr){
let answer=[];
n=arr.length;
let ch=Array.from({length:n},()=>0);
let tmp=Array.from({length:m},()=>0);
function DFS(L){
if(L===m){
answer.push(tmp.slice());
}
else{
for(let i=0; i<n; i++){
if(ch[i]===0){
ch[i]=1;
tmp[L]=arr[i];
DFS(L+1);
ch[i]=0;
}
}
}
}
DFS(0);
return answer;
}
let arr=[3, 6, 9];
console.log(solution(2, arr));
Author And Source
이 문제에 관하여(자바스크립트 코딩테스트 '순열 구하기'), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@saiani1/자바스크립트-코딩테스트-순열-구하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)