순열이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미합니다.
순열은 순서를 고려합니다. ( [1,2,3] != [2,3,1] )
import java.io.*;
import java.util.*;
public class test {
static int N, R; // N개 중에 R개를 선택
static int[] permuArr; // R개의 순열을 담는 배열
static int[] visited;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
R = Integer.parseInt(br.readLine());
permuArr = new int[R];
visited = new int[N+1];
permutation(0);
}
static void permutation(int deep) {
if(deep == R) {
System.out.println(Arrays.toString(permuArr));
return;
}
for(int i=1; i<=N; i++) {
if(visited[i] == 0) {
permuArr[deep] = i;
visited[i] = 1;
permutation(deep+1);
permuArr[deep] = 0;
visited[i] = 0;
}
}
}
}
[입력-출력 예시]
3
2
[1, 2]
[1, 3]
[2, 1]
[2, 3]
[3, 1]
[3, 2]