Algorithm
[BJ]10974번: 모든순열(Java)
옥돔이와 연근이
2022. 8. 30. 21:43
반응형
문제
N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.
출력
첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.
예제 입력 1
3
예제 출력 1
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
그냥 순열
🤦♀️ My Solution
package 순열조합;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BJ_10974 {
static int N;
static boolean check[];
static int select[];
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
check = new boolean[N];
select = new int[N];
permu(0);
}
static public void permu(int cnt) {
// 기저조건
if (cnt == N) {
for (int i = 0; i < N; i++) {
System.out.print(select[i] + " ");
}
System.out.println();
return;
}
for (int i = 0; i < N; i++) {
if (check[i])
continue;
check[i] = true;
select[cnt] = i + 1;
permu(cnt + 1);
check[i] = false;
}
}
}
반응형