1, 2, 3 이 있으면 1, 3, 2 로 바꾸는 것처럼 순열을 만드려면 swap
을 하는 부분이 필요하다.
const arr = ["가", "나", "다"];
function permutation(depth, n, r){
if(r === depth){
console.log(arr.join(' '));
return;
}
for(let i = depth; i < n; i++){
[ arr[i], arr[depth] ] = [ arr[depth], arr[i] ];
permutation(depth + 1, n, r);
[ arr[i], arr[depth] ] = [ arr[depth], arr[i] ]
}
}
permutation(0, 3, 3)
결과는 3!
인 6개의 순열이 나와야 한다.
/* 실행 결과 */
가 나 다
가 다 나
나 가 다
나 다 가
다 나 가
다 가 나
4시간째 재귀함수를 사용한 순열 코드를 들여다 봤는데 아직도 머릿속이 복잡해서 정리가 잘 안된다....ㅜㅜㅜ
그냥 머리로 순열을 생각하면 이해가 되는데 코드로 이해하려니 무한의 인피니트가 되버린다.
이해가 될 때까지 다시 살펴봐야겠다.