자바(Java)의 알고리즘 중에 조합에 대해 알아보도록 하자.
- 조합(Combonation) - 서로 다른 n개 중에서 r개를 선택하는 경우의 수(순서X,중복X) -> nCr => nPr / r!
- 중복 조합 - 서로 다른 n개 중에서 r개를 선택하는 경우의 수(순서X,중복O) => n+r-1Cr
public class Main {
static int Combination(int n, int r) {
int pResult = 1;
int rResult = 1;
for (int i = n; i >=n-r+1; i--) {
pResult *= i;
}
for (int i = 1; i <= r ; i++) {
rResult *= i;
}
return pResult / rResult;
}
public static void main(String[] args) {
System.out.println("== 조합 ==");
int n = 4;
int r = 2;
int pResult = 1;
int rResult = 1;
for (int i = n; i >=n-r+1; i--) {
pResult *= i;
}
for (int i = 1; i <= r ; i++) {
rResult *= i;
}
System.out.println("결과 = " + (pResult / rResult));
System.out.println("== 중복 조합 ==");
n = 2;
r = 3;
System.out.println("결과 : " + Combination(n+r-1,r));
}
}
== 조합 ==
결과 = 6
== 중복 조합 ==
결과 : 4