반응형
문제 설명
자세한 설명은 링크 참조 부탁드립니다.
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]);
}
반응형
'Javascript > 코딩테스트-연습' 카테고리의 다른 글
[JavaScript] 배열 회전 시키기 - 프로그래머스 (24) | 2024.03.28 |
---|---|
[JavaScript] 2차원으로 만들기 - 프로그래머스 (24) | 2024.03.26 |
[JavaScript] 모스부호(1) - 프로그래머스 (28) | 2024.03.26 |
[JavaScript] 개미군단 - 프로그래머스 (24) | 2024.03.25 |
[JavaScript] 진료순서 정하기 - 프로그래머스 (26) | 2024.03.25 |