20231005 구슬을 나누는 경우의 수

이셀·2023년 10월 4일
0

구슬을 나누는 경우의 수

function solution(balls, share) {
    let factorial = [BigInt(1)];

    for(let i = 1; i<= balls; i++){
        factorial[i] = factorial[i-1] * BigInt(i);
    }

    return factorial[balls] / (factorial[balls - share] * factorial[share])
}

경우의 수 수식을 코드로써 푸는 문제다
문제를 보고 아! 이 수식! 하고 바로 기억하고 있었지만 이걸 코드적으로 풀자니 너무 버거운 문제였다;;

해당문제는 BigInt를 사용해서 푸는 문제로, 재귀함수로도 풀리는 문제라고 한다!

BigInt의 필요성을 잘 모르겠어서 찾아보면서 공부했다.

해당 문제에 대한 여러 풀이(참고) > https://velog.io/@jiyaho/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0-%EA%B5%AC%EC%8A%AC%EC%9D%84-%EB%82%98%EB%88%84%EB%8A%94-%EA%B2%BD%EC%9A%B0%EC%9D%98-%EC%88%98-JavaScript

BigInt

십진법을 사용해서 합계를 표현, 조작하는데 유용한 내장객체라고 한다.
Number와 비슷하지만 Math()와 함께 사용할 수 없다는 점으로 인해 자료형으로 먼저 변환해야한다

BigInt 설명 > https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/BigInt

BigInt에 대한 설명, 예시 >
https://frontdev.tistory.com/entry/JS-8%EB%B2%88%EC%A7%B8-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%83%80%EC%9E%85-BigInt

profile
프론트엔드 개발 과정을 기록 중입니다:)

0개의 댓글