function solution (balls, share) {
function factorial (n) {
return n ? n * factorial(n-1) : 1
}
return (factorial(balls) / (factorial(balls-share) * factorial(share)))
}
balls, share의 범위를 감당하기 위해 BigInt 적용
function solution (balls, share) {
function factorial (num) {
return num ? BigInt(num) * factorial(BigInt(num)-1n) : 1n
}
return (factorial(balls) / (factorial(balls-share) * factorial(share)))
}
function solution (balls, share) {
const [n, m] = [balls, share]
const fact = [BigInt(1), BigInt(1)]
for (let i=2; i<=n; i++) {
fact[i] = fact[i-1] * BigInt(i)
}
return Number(fact[n] / (fact[n-m] * fact[m]))
}
(1) 서로 다른 n개 중 m개를 뽑는 경우의 수 공식
(2) 구조분해할당
const [n, m] = [balls, share]
(3) BigInt 타입의 1 (=1n) 을 2개 가진 Array 생성
const fact = [BigInt(1), BigInt(1)]