본문 바로가기

알고리즘/문제풀이

[10974] 모든 순열

반응형

https://www.acmicpc.net/problem/10974


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