티스토리 뷰

    문제 설명

     

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

    제한사항
    • 1 ≤ balls ≤ 30
    • 1 ≤ share ≤ 30
    • 구슬을 고르는 순서는 고려하지 않습니다.
    • share  balls
    입출력 예 설명

    입출력 예 #1

    • 서로 다른 구슬 3개 중 2개를 고르는 경우의 수는 3입니다. 

    입출력 예 #2

    • 서로 다른 구슬 5개 중 3개를 고르는 경우의 수는 10입니다.
    Hint
    • 서로 다른 n개 중 m개를 뽑는 경우의 수 공식은 다음과 같습니다. 

    자바 풀이 

    class Solution {
        public int solution(int balls, int share) {
            
            if (balls == share || share==0) return 1;
            return solution(balls-1, share-1)+solution(balls-1,share);
          
        }
    }

     

     

    조합 (Combination)

     

    nCr : n 개 중 r 개를 순서에 상관없이 선택하는 방법의 수 

     

    학생때 확률통계하면서 배웠던게 기억난다.

    n 값이 주어지면 1부터 n 까지 곱을 해야하는데 for문을 사용하게 되면 중첩을 해야 해서 재귀함수를 사용했다. 

    (뭔가 그리고 살짝,, 멋지게 풀고 싶었다. )

     

    재귀함수

    재귀함수는 정의 단계에서 자기 자신을 재참조 하는 함수를 말한다.

    재귀 호출 함수는 반복 고리를 끊을 수 있는 조건을 반드시 포함해야 한다.

     

    이번 풀이에서는 if 문에 종료조건을 작성했다. 

    구슬의 개수와 친구들에게 나누어줄 구슬의 개수가 동일하거나 또는 재귀가 반복되어 share 값이 0일때 1이 리턴된다. 

     

     

     

    «   2025/07   »
    1 2 3 4 5
    6 7 8 9 10 11 12
    13 14 15 16 17 18 19
    20 21 22 23 24 25 26
    27 28 29 30 31
    글 보관함
    최근에 올라온 글
    Total
    Today
    Yesterday