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

모두 다르게 생긴 구슬을
친구들에게 나누어주려고 한다.
구슬의 개수 balls와
나누어 줄 구슬 개수 share이 주어진다.
balls개의 구슬 중 share개의 구슬을
고르는 가능한 모든 경우의 수를 reutrn하라.
구슬을 고르는 순서는 고려하지 않는다.
balls | share | result |
3 | 2 | 3 |
5 | 3 | 10 |
** 풀이 방법
재귀 함수를 사용하려고 했으나
ㅈㅔ출할 때 자꾸 오류가 나서 방법을 바꿨다.
경우의 수 공식
* double형으로 d1, d2, d3 선언
d1 = 1 ~ balls까지 곱하기
d2 = 1 ~ res까지 곱하기
d3 = 1 ~ share까지 곱하기
공식에 적용 result→ d1 / (d2 * d3)
반올림한 result값을 int형으로 바꿔서 return
<> 전체 코드 </>
class Solution {
public int solution(int balls, int share) {
int answer = 0;
int res = balls - share;
double result = 0;
double d1 = 1; double d2 = 1; double d3 = 1;
for (int i=balls; i>0; i--) {
d1 *= i;
}
for (int i=res; i>0; i--) {
d2 *= i;
}
for (int i=share; i>0; i--) {
d3 *= i;
}
result = d1 / (d2*d3);
answer = (int)Math.round(result);
return answer;
}
}
반응형
'개발로그 > 알고리즘' 카테고리의 다른 글
프로그래머스 Lv.0 문자열이 몇 번 등장하는지 세기 (0) | 2023.07.28 |
---|---|
프로그래머스 Lv.0 정사각형으로 만들기 (0) | 2023.07.28 |
프로그래머스 Lv.0 무작위로 k개의 수 뽑기 (0) | 2023.07.28 |
프로그래머스 Lv.0 그림 확대 (0) | 2023.07.28 |
프로그래머스 Lv.0 수열과 구간 쿼리2 (0) | 2023.07.28 |
댓글