function factorial(n){
let bigN = BigInt(n);
if(bigN === BigInt(1) || bigN === BigInt(0)){
return BigInt(1);
}
return bigN * factorial(bigN - BigInt(1));
}
function solution(balls, share) {
const n = balls;
const m = share;
return factorial(n) / (factorial(n - m) * factorial(m));
}
이 문제는 사실...BigInt
때문에 많은 분들이 헤매셨을거라고 생각한다.
필자도 이유를 몰라서 한참을 헤맸다.
아무래도 입력값으로 일반적인 number
타입을 넘어서는 값이 들어오는 케이스가 있는 모양이다.
참고로, BigInt
타입은 BigInt
타입끼리만 연산이 가능하다.
따라서 factorial()
함수에서 연산하거나 반환하는 값들을 BigInt
타입으로 변환해줬다.