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
십진법을 사용해서 합계를 표현, 조작하는데 유용한 내장객체라고 한다.
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