알고리즘/문제풀이
[10974] 모든 순열
BSHwan
2019. 10. 13. 21:22
반응형
import java.util.Scanner;
class Main {
static int N;
static int[] arr;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
arr = new int[N];
int number = 1;
for(int i=0; i<N; i++) {
arr[i] = number++;
}
perm(0);
}
public static void perm(int depth) {
if(depth == N) {
for(int i=0; i<N; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
return;
}
for(int i=depth; i<N; i++) {
rightRotate(depth, i);
perm(depth+1);
leftRotate(depth, i);
}
}
public static void rightRotate(int s, int e) {
int temp = arr[e];
for(int i=e; i>s; i--) {
arr[i] = arr[i-1];
}
arr[s] = temp;
}
public static void leftRotate(int s, int e) {
int temp = arr[s];
for(int i=s; i<e; i++) {
arr[i] = arr[i+1];
}
arr[e] = temp;
}
}
반응형