Javascript/코딩테스트-연습
[JavaScript] 구슬을 나누는 경우의 수 - 프로그래머스
BeomBe
2024. 3. 26. 12:20
반응형
문제 설명


자세한 설명은 링크 참조 부탁드립니다.
https://school.programmers.co.kr/learn/courses/30/lessons/120840
나의 풀이
while문에 share가 0이 될때까지 동작시켜 계산했다.
function solution(balls, share) {
let answer = 1;
while (share) {
answer *= balls / share;
balls--;
share--;
}
return Math.round(answer);
}
다른사람들은 재귀함수를 사용하여 많이 풀었다.
const 팩토리얼 = (num) => num === 0 ? 1 : num * 팩토리얼(num - 1)
function solution(balls, share) {
return Math.round(팩토리얼(balls) / 팩토리얼(balls - share) / 팩토리얼(share))
}
마지막으로 BigInt를 사용하여 풀이한 분들도 많았다.
* BigInt : BigInt 는 Number 원시 값이 안정적으로 나타낼 수 있는 최대치인 2^53 - 1보다 큰 정수를 표현할 수 있는 내장 객체입니다.
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]);
}
반응형