자바(Java)의 알고리즘 중에 순열에 대해 알아보도록 하자.
- 팩토리얼(Factorial) -1에서 n까지의 모든 자연수의 곱(n!)
- 순열(Permutation) - 서로 다른 n개 중에서 r개를 뽑는 경우의 수(순서O,중복X) => n(n-1)(n-1)...(n-r+1)
- 중복 순열 - 서로 다른 n개중 r개를 선택하는 경우의 수(순서O,중복O) => n의 r승
- 원 순열 - 원 모양의 테이블에 n개의 원소를 나열하는 경우의 수 => (n-1)!
public class Main {
public static void main(String[] args) {
System.out.println("== 팩토리얼 ==");
int n = 5;
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
System.out.println("result = " + result);
System.out.println(IntStream.range(1,6).reduce(1,(x,y) -> (x * y)));
System.out.println("== 순열 ==");
n = 5;
int r = 3;
result = 1;
for (int i = n; i >= n - r + 1; i--) {
result *= i;
}
System.out.println("result = " + result);
System.out.println("== 중복 순열 ==");
n = 4;
r = 2;
result = 1;
for (int i = 0; i < r; i++) {
result *= n;
}
System.out.println("result = " + result);
System.out.println(Math.pow(n,r));
System.out.println("== 원 순열 ==");
n = 3;
result = 1;
for (int i = 1; i < n; i++) {
result *= i;
}
System.out.println("result = " + result);
}
}
== 팩토리얼 ==
result = 120
120
== 순열 ==
result = 60
== 중복 순열 ==
result = 16
16.0
== 원 순열 ==
result = 2
Process finished with exit code 0