예제 1
let input = ['a', 'b', 'c'];
let count = 0;
function permutation(arr) {
// for i -> 첫번째 index 위치시킬 요소 [i, 0, 0]
for ( let i = 0; i < arr.length; i++){
// for j -> 두번째 index 위치시킬 요소 [i, j, 0]
for ( let j = 0; j < arr.length; j++){
if(i == j) continue; // i랑 j 같을 경우 skip처리
// for k -> 세번째 index 위치시킬 요소 [i, j, k]
for (let k = 0; k < arr.length; k++){
if(i == k) continue; // i랑 k 같을 경우 skip처리
if(k == j) continue; // k랑 j 같을 경우 skip처리
console.log(arr[i], arr[j], arr[k]);
}
}
}
}
permutation(input);
console.log(count);
예제 2 재귀함수 사용
let input = ['a', 'b', 'c'];
let count = 0;
function permutation(arr, s, r) {
//1. 재귀함수를 멈춰야할 조건
if(s == r){
count++;
console.log(arr.join("")); // join : 문자열로 변경
return;
}
//2. 재귀를 돌면서 변경되어야 될 부분/메인로직
for(let i = s; i <arr.length; i++){
[arr[s], arr[i]= arr[i], arr[s]]; // swap
permutation(arr, s+1, r);
[arr[s], arr[i]= arr[i], arr[s]]; // 원상복귀
}
}
permutation(input, 0, 2); // start위치:0, 몇번까지 뽑아야 하는지 : 2
console.log(count);
그림 잘못 그려짐 빨간 화살표 참고..