[프로그래머스] 자바 구슬을 나누는 경우의 수

ybk·2024년 3월 1일
0

프로그래머스

목록 보기
236/236

Lv.0 구슬을 나누는 경우의 수


문제 설명

머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.


입출력

코드 풀이

class Solution {
    public int solution(int balls, int share) {
        int numsub = balls-share;
        
        if(balls==share){
            return 1;
        }
        
        for(int i = balls-1; i>0; i--){
            balls *= balls-i;
        }
        
        for(int i = share-1; i>0; i--){
            share *= share-i;
        }
        for(int i = numsub-1; i>0; i--){
            numsub *= numsub-i;
        }
        return balls/(numsub*share);
        
    }
}

내 풀이 설명

  • r!,(n-r)!의 계산이 중복되어 둘 중 하나를 미리 계산해야 더 빠르게 프로그램이 돌아 갈 수 있다고 판단하여 공식을 다시 세웠습니다.

출처: 프로그래머스 코딩테스트 연습

profile
개발자 준비생~

0개의 댓글