TOY1: N으로 받은 조의 수의 모든 경우중 K의 위치(index)
function orderOfPresentation (N, K) {
function factorial (n){
if(n<=1) return 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)로 추가된다.