자바스크립트
[JavaScript] 구슬을 나누는 경우의 수
코딩하는둥이
2023. 9. 8. 17:14
문제 설명
머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.
입출력 예
ball | share | result |
3 | 2 | 3 |
5 | 3 | 10 |
코드
const facto = (num) => (num === 0 ? 1 : num * facto(num - 1));
const solution = (balls, share) => {
return Math.round(
facto(balls) / facto(balls - share) / facto(share)
);
}
풀이

facto는 num이 0일 경우 그 외의 경우 num과 facto(num - i)를 곱한 값을 반환합니다.
const facto = (num) => (num === 0 ? 1 : num * facto(num - 1));
facto(balls)에서 balls 아이템 중에서 아무 아이템도 선택하지 않을 경우의 모든 가능한 조합 수를 나타냅니다.
facto(balls - share)는 balls에서 share 아이템을 선택하지 않은 경우의 모두 가능한 수를 나타냅니다.
facto(share) share 아이템을 선택하는 경우의 가능한 조합수를 나타냅니다.
return Math.round(
facto(balls) / facto(balls - share) / facto(share)
);
그것들을 나누게 된다면 balls 아이템 중에서 share 아이템을 선택하는 조합의 수가 계산이 됩니다.
공부
팩토리얼
자연수일 때, 1부터 n까지의 모든 자연수의 곱입니다.
기호는 "!"를 사용하며 팩토리얼이라고 합니다.
5! = 5 * 4 * 3 * 2 * 1