Programers 4장 - Lv.0 구슬을 나누는 경우의 수
포스트
취소

Programers 4장 - Lv.0 구슬을 나누는 경우의 수

구슬을 나누는 경우의 수

문제

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

제한사항

  • 1 ≤ balls ≤ 30
  • 1 ≤ share ≤ 30
  • 구슬을 고르는 순서는 고려하지 않습니다.
  • shareballs

입출력 예시

ballsshareresult
323
5310

입출력 예 설명

  • 입출력 예 #1 image

    • 서로 다른 구슬 3개 중 2개를 고르는 경우의 수는 3입니다.
  • 입출력 예 #2

    • 서로 다른 구슬 5개 중 3개를 고르는 경우의 수는 10입니다.

HINT

  • 서로 다른 n개 중 m개를 뽑는 경우의 수 공식은 다음과 같습니다. image

내가 짠 코드

1
2
3
4
5
6
7
8
9
function solution(balls, share) {
  var result = 1;
  while (share > 0) {
    result = (result * balls) / share;
    balls = balls - 1;
    share = share - 1;
  }
  return Math.round(result);
}

코드 설명

  • Hint를 참고하여 분자는 n의 피보나치와 분모는 n에서 m을 뺀 피보나치에 m을 곱한 값을 구한다.
  • 이를 풀어서 대입하면 분자에는 balls의 피보나치가 오고, 분모에는 share의 피보나치가 온다.
  • 구해지는 값이 소숫값으로 나오기 때문에 이를 반올림처리 한다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.