문제 설명
머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요
입출력 예




입출력 예 설명
const factorial = (num) => num === 0 ? 1:num * factorial(num - 1)
function solution(balls, share) {
var answer = 0;
answer = Math.round(factorial(balls) / factorial(balls - share) / factorial(share))
return answer;
}
function solution(balls, share) {
var result = 1;
let n = 1
let a = 1
//전체 n개 중에서 a개를 순서없이 뽑는 경우의 수
//n (n-1) (n -2) 를 a개 만큼 진행한 값(분자) 나누기
//a (a - 1) (a - 2) 를 a가 1이 될때까지 진행한 값(분모)
for(let i=0; i<share; i++){
n *= balls-i
a *= share-i
}
return Math.round(n/a);
}
푸는 방식을 몰라 다른 사람들이 푼 방법을 먼저 보고 풀이의 방법을 고민했다.
참고한 블로그 중 가장 도움이 되었던 공식이 아래와 같다.
공식
전체 n개 중에서 a개를 순서없이 뽑는 경우의 수
n * (n-1) * (n -2) 를 a개 만큼 진행한 값(분자) 나누기
a * (a - 1) * (a - 2) 를 a가 1이 될때까지 진행한 값(분모)
위의 공식을 참고해 경우의 수를 구하는 식을 이해할 수 있었다.
🚀 틀린점이 있어 지적할 사항이 있다면, 피드백해주시면 감사하겠습니다. 😊
'알고리즘' 카테고리의 다른 글
| 직각삼각형 출력하기 - (프로그래머스 코딩테스트 입문) (0) | 2023.01.22 |
|---|---|
| 최빈수 구하기 - (프로그래머스 코딩테스트 입문) (1) | 2023.01.17 |
| 분수의 덧셈 - (프로그래머스 코딩테스트 입문) (0) | 2023.01.16 |
| 문제해결접근법 (0) | 2023.01.14 |
| 객체와 배열의 Big O 표기법 (0) | 2023.01.02 |