Algorithm/Math

조합(Combination), 중복조합

Dev_Green 2023. 1. 9. 17:31

조합(Combination)

서로 다른 n개 중에서 r개를 선택하는 경우의 수 (중복 선택 X)

 

중복 조합

서로 다른 n개 중에서 r개를 선택하는 경우의 수 (중복 선택 O)

 

코드 (Java)

public class Main {
    public static void main(String[] args) {
        int n = 6;
        int r = 3;

        System.out.println(getCombination(n, r));  // 조합
        System.out.println(getCombination(n + r - 1, r));  // 중복 조합
    }

    
    public static int getCombination(int n, int r) {
        int pResult = 1;
        for (int i = n; i >= n - r + 1 ; i--) {
            pResult *= i;
        }

        int rResult = 1;
        for (int i = 1; i <= r; i++) {
            rResult *= i;
        }

        return pResult / rResult;
    }
}