반응형
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;
}
}
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
[7576] 토마토 (0) | 2019.12.13 |
---|---|
[프로그래머스] 네트워크 (0) | 2019.12.13 |
[2146] 다리 만들기 (0) | 2019.10.13 |
[5502] 팰린드롬 (0) | 2019.09.25 |
[2606] 바이러스 (0) | 2019.09.24 |