알고리즘 - 순열(Permutation)

REASON·2022년 9월 3일
0

알고리즘

목록 보기
6/20

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시간째 재귀함수를 사용한 순열 코드를 들여다 봤는데 아직도 머릿속이 복잡해서 정리가 잘 안된다....ㅜㅜㅜ
그냥 머리로 순열을 생각하면 이해가 되는데 코드로 이해하려니 무한의 인피니트가 되버린다.
이해가 될 때까지 다시 살펴봐야겠다.

0개의 댓글