💡 문제

💬 입출력 예시

📌 풀이(소스코드)
import java.util.Scanner;
public class Main {
private static int n;
private static int[] arr;
private static boolean[] visited;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
arr = new int[n];
visited = new boolean[n+1];
permutation(0);
}
static void permutation(int count) {
if (count == n) {
for (int i = 0; i < n; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
for (int i = 1; i <=n; i++) {
if (!visited[i]) {
arr[count] = i;
visited[i] = true;
permutation(count+1);
visited[i] = false;
}
}
}
}
📄 해설
- 순열 알고리즘을 사용하여 해결하는 문제로, 중복 방지를 위해 방문 배열
visited
를 사용
- 순열 알고리즘은 꼭 외워야한다