728x90
문제
N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.
출력
문제 풀이 :
순열에 관한 간단한 구현 문제였다.
순열은 코테에서 자주 쓰이니 잘 알아 두자.
내 코드 :
import java.util.Scanner;
public class Main {
// 백준알고리즘 10974번 모든순열
static int N;
static int[] arr;
static boolean[] visited;
static int[] output;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
arr = new int[N];
output = new int[N];
visited = new boolean[N];
for (int i = 0; i < N; i++) {
arr[i] = i + 1;
}
perm(arr, output, visited, 0, N, N);
}
// 순서를 지키면서 n 개중에서 r 개를 뽑는 경우
static void perm(int[] arr, int[] output, boolean[] visited, int depth, int n, int r) {
if (depth == r) {
print(output, r);
return;
}
for (int i = 0; i < n; i++) {
if (visited[i] != true) {
visited[i] = true;
output[depth] = arr[i];
perm(arr, output, visited, depth + 1, n, r);
visited[i] = false;
;
}
}
}
static void print(int[] arr, int r) {
for (int i = 0; i < r; i++)
System.out.print(arr[i] + " ");
System.out.println();
}
}
728x90
'BaekJoon' 카테고리의 다른 글
[백준 알고리즘] 17298번 : 오큰수 (Python) 문제 풀이 (0) | 2022.12.31 |
---|---|
[백준 알고리즘] 1174번 : 줄어드는 수 (JAVA) 문제 풀이 (0) | 2022.12.30 |
[백준 알고리즘] 1025번 : 제곱수 찾기 (JAVA) 문제 풀이 (0) | 2022.12.26 |
[백준 알고리즘] 1188번 : 음식 평론가 (Python) 문제 풀이 (0) | 2022.12.23 |
[백준 알고리즘] 5430번 : AC (Python) 문제 풀이 (0) | 2022.12.22 |