머쓱이는 구슬을 친구들에게 나누어 주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수
balls
와 친구들에게 나누어 줄 구슬 개수share
이 매개변수로 주어질 때,balls
개의 구슬 중share
개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해 주세요.
balls
≤ 30share
≤ 30share
≤ balls
balls | share | result |
---|---|---|
3 | 2 | 3 |
5 | 3 | 10 |
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인 이유는 balls
와 share
의 수가 30까지 이기때문에 저렇게 설정해 주었다.
프로그래머스에서 준 힌트를 사용해서 푼 문제들은 아래 참고 사이트를 확인해 주세요!