본문 바로가기
일반 학습/코딩 테스트

TOY1: N으로 받은 조의 수의 모든 경우중 K의 위치(index)

by StelthPark 2021. 10. 5.

function orderOfPresentation (NK) {

    function factorial (n){

      if(n<=1return 1

      return n * factorial(n-1)

    }

 

    let order = 0

    let usecheck = Array(1+N).fill(false)

 

    for(let i = 0 ; i<K.length ; i++){

      let num =K[i]

      usecheck[num]=true

      const not = usecheck.slice(1,num)

      const notcount = not.filter((el)=>el===false).length

      const push = notcount * factorial(N-i-1)

 

      order +=push

    }

    return order

  

    }

 

* N은 입력받은 조의 갯수 K는 입력받은 조를 경우의 수로 모두 나타냈을때 K가 일치하는 경우의 수에서의 순서(인덱스)

* K가 [2,3,1] 이라면 2로 시작하는 경우의 수 전에 1로 시작하는 경우의 수를 우선 먼저 구해야하며 그후 2로 시작하는 경우의 수중 [2,1,3]까지 구하여 총 수가 자신의 위치가 된다.

* Array(1+N)으로 배열은 인덱스가 0인점을 고려하여 4개의 false로 구성된 배열을만든다.

* for문으로 K[i]를 하여 2를 우선 true로 만들어 slice(1~2)를 하여 2전까지의 사용안한 조들의 갯수를 뽑아낸다.

* 뽑아낸 갯수 는 2를 제외한 factiorial를 해야하니 갯수 * fatorial(N-1)이 될수 있도록 하면 1의 경우수를 모두 만들어낸다

* 그 후 [2,1,3]은 for문의 i=2 차례에서 3의 자리에 true가 들어가 2는 이미 앞전에서 true이므로 남은 1이 fatorial에서(n-2)로 추가된다.

'일반 학습 > 코딩 테스트' 카테고리의 다른 글

TOY9: 시간복잡도 거듭제곱  (0) 2021.10.30
TOY11: 깊이 우선 탐색 (DFS)  (0) 2021.10.20
TOY7: DFS  (0) 2021.10.14
TOY5: 계산했던 값은 기억하는 메모리 피보나치  (0) 2021.10.08
코딩 테스트 연습  (0) 2021.09.30

댓글