알고리즘/코딩테스트 공부
8-10. 순열 구하기 (DFS) // 재귀 함수로 순열 구하기 (중요)
YG - 96년생 , 강아지 있음, 개발자 희망
2022. 3. 24. 09:53
문제
10이하의 N개의 자연수가 주어지면 이 중 M개를 뽑아 일렬로 나열하는 방법을 모두 출력합 니다.
풀이
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, 5, 8];
console.log(solution(2, arr));
재귀 함수로 순열을 구하는 것은 순열을 조합할 숫자가 몇개이든 코드 변화 없이 DFS 재귀함수로 풀 수 있기 때문에 중요합니다