본문 바로가기
알고리즘/백준

[JAVA]백준_10974_모든 순열

by 박 현 황 2021. 2. 7.

문제링크

 

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

 

10974번: 모든 순열

N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main_10974 {

	private static int N;
	private static int arr[];
	private static boolean isSelected[];
	public static void main(String[] args) throws NumberFormatException, IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		N = Integer.parseInt(br.readLine());
		arr = new int[N];
		isSelected = new boolean[N];
		
		perm(0);
	}
	
	private static void perm(int cnt) {
		if(cnt == N) {
			for(int i=0;i<N;i++)
				System.out.print(arr[i]+" ");
			System.out.println();
			return ;
		}
		
		for(int i=0;i<N;i++) {
			if(isSelected[i])
				continue;
			arr[cnt] = i+1;
			isSelected[i] = true;
			perm(cnt+1);
			isSelected[i] = false;
		}
	}

}