경우의 수
어떤 사건 혹은 일이 일어날 수 있는 경우의 가짓수를 수로 표현
순열
1. 반복문 for
let input = ['a', 'b', 'c'];
let count = 0;
function permutation(arr){
for(let i = 0; i < input.length; i++){
for(let j = 0; j < input.length; j++){
if( j == i) continue;
for(let k = 0; k < input.length; k++){
if( k == j ) continue;
if( k == i ) continue;
console.log(i, j, k);
count++;
}
}
}
}
permutation(input);
console.log(count);
- 뽑는 개수 r의 수가 커질수록 for 반복문이 늘어나 복잡해짐
2. 재귀
let input = ['a', 'b', 'c'];
let count = 0;
function permutation(arr, s, r){
if(s == r) {
count++;
console.log(input);
return;
}
for( let i = s; i <= r; i++){
[arr[i], arr[s]] = [arr[s], arr[i]];
permutation(arr,s+1,r);
[arr[i], arr[s]] = [arr[s], arr[i]];
}
}
permutation(input, 0, 2);
console.log(count);
- 인자와 배열을 전달해서 동일한 for 반복문을 재활용
- 재귀를 통해 반복문이 진행될 때 i,s 의 업로드 과정을 잘 따라가야 이해 할 수 있음