[프로그래머스] 구슬을 나누는 경우의 수
2025. 8. 10. 21:01ㆍCoding Test (Algorithm)/JAVA

Quiz
Solution(Private)
팩토리얼 개념을 이해하고 풀어볼 수 있는 문제이다. 문제가 몇 번 틀리다가, JAVA에서 int는 범위가 정해진 타입임을 떠올리고, 처음부터 분모/분자를 나눠주는 식으로 문제를 풀게 되었다. 여기서 포인트를 다음처럼 생각했다.
[예 : 5개의 공이 있는데, 3개를 가져가는 케이스는?]
(분자) 5 * 4 * 3 * 2 * 1
(분모) (3 * 2 * 1) * (1 * 2)
여기서 3이란 숫자를 기준으로 하여 공통된 숫자를 지우면,
(분자) 5 * 4
(분모) 1 * 2 이 남게 된다!
따라서 for문을 이용하여 기준점까지 진행될 수 있도록 하였다.
class Solution {
public int solution(int balls, int share) {
long answer = 1;
for (int i = 0; i < share; i++) {
answer *= (balls - i);
answer /= (i + 1);
}
return (int) answer;
}
}
추가로, 여기서 팩토리얼의 특징인
- n개의 서로 다른 원소 중 r개를 고를 때, nCr= (n−1)Cr + (n−1)C(r−1) 의 식을 이용해도 된다.
'Coding Test (Algorithm) > JAVA' 카테고리의 다른 글
| [프로그래머스] 크기가 작은 문자열 (0) | 2025.12.13 |
|---|---|
| [프로그래머스] 없는 숫자 더하기 (0) | 2025.08.12 |
| [프로그래머스] 안전지대 (2) | 2025.08.10 |
| [백준] 11382번 - 꼬마 정민 (1) | 2025.08.03 |
| [프로그래머스] 치킨 쿠폰 (0) | 2025.02.23 |