[프로그래머스 | Javascript] 코딩테스트 입문 - 구슬을 나누는 경우의 수

박기영·2022년 11월 1일
0

프로그래머스

목록 보기
70/159
post-custom-banner

solution

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 타입으로 변환해줬다.

profile
나를 믿는 사람들을, 실망시키지 않도록
post-custom-banner

0개의 댓글