문제 설명
머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.
제한사항
- 1 ≤ balls ≤ 30
- 1 ≤ share ≤ 30
- 구슬을 고르는 순서는 고려하지 않습니다.
- share ≤ balls
입출력 예
balls | share | result |
3 | 2 | 3 |
5 | 3 | 10 |
입출력 예 #1 : 서로 다른 구슬 3개 중 2개를 고르는 경우의 수는 3입니다.
입출력 예 #2 : 서로 다른 구슬 5개 중 3개를 고르는 경우의 수는 10입니다.
Hint
나의 풀이
import java.math.BigInteger;
class Solution {
public BigInteger solution(int balls, int share) {
BigInteger answer = BigInteger.ZERO;
answer = factorial(balls).divide(factorial(balls-share).multiply(factorial(share)));
return answer;
}
public BigInteger factorial(int number){
if(number == 0 || number == 1){
return BigInteger.ONE;
} else {
return BigInteger.valueOf(number).multiply(factorial(number-1));
}
}
}
// class Solution {
// public int solution(int balls, int share) {
// int answer = 0;
// answer = factorial(balls) / (factorial(balls-share) * factorial(share));
// return answer;
// }
// public int factorial(int number){
// if(number == 1 || number == 0){
// return 1;
// }else {
// return number * factorial(number-1);
// }
// }
// }
다른 풀이
class Solution {
public int solution(int balls, int share) {
return combination(balls, share);
}
public static int combination(int balls, int share){
if(balls == share || share == 0) return 1;
return combination((balls -1), (share -1)) + combination(balls - 1, share);
}
}
'👨💻 Coding Test' 카테고리의 다른 글
[Programmers/Java/Lv.0] 40.2차원으로 만들기 (0) | 2024.10.23 |
---|---|
[Programmers/Java/Lv.0] 39.점의 위치 구하기 (0) | 2024.10.23 |
[Programmers/Java/Lv.0] 37.가위 바위 보 (0) | 2024.10.21 |
[Programmers/Java/Lv.0] 36.모스부호 (1) (0) | 2024.10.08 |
[Programmers/Java/Lv.0] 35.개미 군단 (0) | 2024.10.04 |