조합 계산 공식 (이항계수)
조합의 점화식
점화식에 따른 재귀함수 작성
public static int cur(int n, int k) {
if(n == k || k ==0) return 1;
return cur(n - 1, k - 1) + cur(n - 1, k);
}
* 공식에 따라 n 과 k가 동일할 때와 k가 1일 때는 값이 1뿐이 안나온다.
* 이러한 공식말고 쉽게 생각해보면
예를 들어 4C3이라 할 때 4개 중 3개를 고르는데 경우의 수가 4 * 3 * 2 이다(순열). 이걸 순서를 없애고자 3! 로 나눠주면 바로 답이 나온다.
(4*3*2) / (3*2*1) = 4
여기서 위의 곱하는 횟수와 아래의 곱하는 횟수가 같기 때문에 같은 for 문 내에서 분자와 분모를 계산할 수 있다.
public int solution(String[] names) {
int n = 4;
int k = 3;
int numerator = 1; // 분자
int denominator = 1; // 분모
for (int i = 0; i < k; i++) {
numerator *= n - i;
denominator *= (i + 1);
}
return numerator / denominator;
}
'알고리즘 > 개념' 카테고리의 다른 글
이진 탐색 트리 (BST,Binary Search Tree) (0) | 2022.04.25 |
---|---|
트리 (Tree), 이진 트리 (Binary Tree) (0) | 2022.04.24 |
QuickSort (퀵 정렬) (0) | 2022.04.16 |
점화식과 재귀함수 (0) | 2022.04.01 |
조합 (Combination) (0) | 2022.04.01 |
댓글