[프로그래머스] Lv. 0 구슬을 나누는 경우의 수

당근 먹는 쿼카·2022년 12월 5일
0

프로그래머스

목록 보기
40/74
post-thumbnail

🔒 구슬을 나누는 경우의 수

문제 설명

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

제한 사항

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

입출력 예

ballsshareresult
323
5310

🔑 나의 풀이

function solution(n, r) {
  let answer = 0
  let dy = Array.from(Array(30), () => Array(30).fill(0))
  function DFS(n, r) {
    if (dy[n][r] > 0) return dy[n][r]
    if (n === r || r === 0) return 1
    else return dy[n][r] = DFS(n - 1, r - 1) + DFS(n - 1, r)
  }
  return answer = DFS(n, r)
}

재귀 함수를 알게 되기 전까지는 아래 참고 사이트들을 통하여서 Bigint 함수를 사용해 주었다.
dy에서 array의 length가 30인 이유는 ballsshare의 수가 30까지 이기때문에 저렇게 설정해 주었다.

프로그래머스에서 준 힌트를 사용해서 푼 문제들은 아래 참고 사이트를 확인해 주세요!

다른 풀이 참고 사이트

codisneverodd github
kwb020312 님 블로그

0개의 댓글