728x90
이해하기
문제 맨 밑에 이런 힌트가 있어서 팩토리얼을 구현해서 풀어야지! 했다가 실패했다.
왠지 모르겠어서 조합으로 풀려다가 또 실패...
질문하기 탭을 봤더니 더 쉬운 방법이 있어서 기록해둔다.
만약 공이 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 + "");
}
}
'JAVA > Coding Test Study' 카테고리의 다른 글
[Lv.0] 프로그래머스 - 진료순서 정하기 : Java (0) | 2024.05.10 |
---|---|
[Lv.0] 프로그래머스 - 정수를 나선형으로 배치하기 : Java (0) | 2024.05.10 |
[Lv.0] 프로그래머스 - 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 : Java (0) | 2024.05.10 |
[Lv.1] 프로그래머스 - 기사단원의 무기 : Java (0) | 2024.05.10 |
[Lv.0] 프로그래머스 - 문자열 잘라서 정렬하기 : Java (0) | 2024.05.10 |