JAVA/Coding Test Study
[Lv.0] 프로그래머스 - 구슬을 나누는 경우의 수 : Java
♡˖GYURI˖♡
2024. 5. 10. 19:49
728x90
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이해하기
문제 맨 밑에 이런 힌트가 있어서 팩토리얼을 구현해서 풀어야지! 했다가 실패했다.
왠지 모르겠어서 조합으로 풀려다가 또 실패...
질문하기 탭을 봤더니 더 쉬운 방법이 있어서 기록해둔다.
만약 공이 30개 있고, 그 중 5개를 뽑는다고 생각해보자.
위의 힌트에 적용시키면 30! / (25! x 5!) 이다.
다시 정리하면 (30 x 29 x 28 x 27 x 26) / (5 x 4 x 3 x 2 x 1) 이 된다.
이걸 가지고 다시 풀이하였다.
문제풀이
import java.util.*;
class Solution {
public int solution(int balls, int share) {
long answer = 1;
int[] num1 = new int[share];
int[] num2 = new int[share];
int idx = 0;
for (int i = balls; i > balls - share; i--) {
num1[idx++] = i;
}
for (int i = 1; i <= share; i++) {
num2[i - 1] = i;
}
for (int i = 0; i < num1.length; i++) {
answer = answer * num1[i] / num2[i];
}
return Integer.parseInt(answer + "");
}
}