문제(출처: 프로그래머스)
머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.
▶ 내가 푼 방식
function factorial(n) {
return n ? n * factorial(n - 1) : 1;
}
function solution(balls, share) {
return Math.round(factorial(balls) / (factorial(balls-share) * factorial(share)))
}
▶ 다른 유저가 푼 방식
// 유저 1
function solution(balls, share) {
var result = 1;
while(share > 0){
result = result * balls / share;
balls = balls - 1;
share = share - 1;
}
return Math.round(result);
}
▶ 배운 것들
- 오류가 나서 혹시나 해서 Math.round() 를 했는데 정답이였다 어떤 예가 있을까??
부동소수점이 나올수도 있어서 일듯하다.
- n!/ (n-m)! m! -> n 개에서 서로 다른 m 개를 고르는 경우의 수 구하는 공식
'프로그래밍 > 코딩연습' 카테고리의 다른 글
[ JS 코딩연습 ] 2024/04/23 : 공 던지기 <다시 풀기> (0) | 2024.04.23 |
---|---|
[ JS 코딩연습 ] 2024/04/23 : 2차원으로 만들기 (0) | 2024.04.23 |
[ JS 코딩연습 ] 2024/04/19 : 모스부호 (1) | 2024.04.19 |
[ JS 코딩연습 ] 2024/04/19 : 진료 순서 정하기 (0) | 2024.04.19 |
[ JS 코딩연습 ] 2024/04/17 : 3. 문자열 정렬 (0) | 2024.04.17 |