Algorithm
조합과 순열

조합과 순열

이항 계수

이항 계수조합의 개수를 나타내는 수학적 개념이다. 즉, n개의 원소 중에서 r개의 원소를 선택하는 경우의 수를 의미한다. 이를 수식으로 표현하면

n / r = n! / r!(n-r)!

으로 표현할 수 있으며, nCr 연산이라고도 부른다.

  • nCr 자바 코드
public static long ncr(int n, int r) {
    if (r > n) return 0;
    if (r == 0 || r == n) return 1;
 
    r = Math.min(r, n - r);
 
    long result = 1;
    for (int i = 0; i < r; i++) {
        result *= (n - i);
        result /= (i + 1);
    }
 
    return result;
}
  • 이항 계수의 합 : 2^n
  • 자기 자신을 포함하는 조합의 합 : 2^(n-1)

예를 들어서, {1, 2, 3, 4}라는 원소가 있을 때, 이 중에서 1을 포함하는 모든 조합은 {2, 3, 4} 부분 집합의 개수에 1을 더한 것과 같다. 즉, 2^3 = 8개의 부분 집합이 있고 이 모든 부분집합에 1이 들어가면 1이 포함된 부분집합이 되는 것이다.

공집합, 2, 3, 4, 23, 24, 34, 234 // 여기에 1을 추가하면 1이 포함된 부분집합이 된다.