https://school.programmers.co.kr/learn/courses/30/lessons/120840
Q. 머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.
※ 서로 다른 n개 중 m개를 뽑는 경우의 수 공식 : n! / (n-m)! X m!
✔ 팩토리얼을 이용하여 푸는 문제였다!!!
팩토리얼(factorial) : n이 자연수일 때, 1부터 n까지의 모든 자연수의 곱을 의미. n 팩토리얼은 n!으로 표시한다.
function solution(balls, share) {
// 서로 다른 n개 중 m개를 뽑는 경우의 수 공식
// n!/(n-m)!*m!
return factorial(balls)/(factorial(balls-share) * factorial(share));
}
function factorial(num){
let result = BigInt(1);
// 그냥 number로 계산처리를 하면 정상적인 결과를 출력하지 않는다.
// 그래서 BitInt로 처리
for(let i = 2; i <= num; i++){
result *= BigInt(i);
}
return result;
}
자바스크립트에서의 Number VS BigInt
자바스크립트에서는 -(2^53 - 1)과 2^53 - 1 사이의 수만 안전하게 다룰 수 있다.
Number.MAX_SAFE_INTEGER // 9007199254740991
Number.MIN_SAFE_INTEGER; // -9007199254740991
최대값 이상으로 값을 더하거나 최소값 이하로 값을 빼려고 하면 정상적으로 표현되지 않는다. (에러는 안 남)
출처
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/BigInt
[리트코드] Remove Element (0) | 2023.03.31 |
---|---|
[리트코드] Duplicate Zeros (0) | 2023.03.30 |
[프로그래머스] 소인수분해 (0) | 2022.11.17 |
[프로그래머스] 최빈값 구하기 (0) | 2022.11.14 |
[프로그래머스] 약수 구하기 (0) | 2022.11.04 |
댓글 영역