링크 →
아영
package Baekjoon.java.silver;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.List;
import java.util.StringTokenizer;
public class boj15649 {
static StringBuilder sb = new StringBuilder();
static int[] answer;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
answer = new int[M];
boolean[] checked = new boolean[N];
dfs(N,M,checked,0);
System.out.println(sb.toString());
}
private static void dfs(int N,int M,boolean[] checked,int cnt){
if(cnt==M){
for (int i = 0; i < M; i++) {
sb.append(answer[i]+" ");
}
sb.append("\\n");
return;
}
for (int i = 0; i < N; i++) {
if(!checked[i]){
answer[cnt]= i+1;
checked[i] = true;
dfs(N,M,checked,cnt+1);
checked[i]= false;
}
}
}
}
은영
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int N,M;
static int[] arr;
static boolean[] visit;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()+" ");
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
arr = new int[M];
visit = new boolean[N];
func(0);
}
private static void func(int cnt) {
if(cnt==M) {
for (int i = 0; i < M; i++) {
System.out.print(arr[i]+" ");
}System.out.println();
return;
}
for (int i = 0; i < N; i++) {
if(!visit[i]) {
visit[i]=true;
arr[cnt] = i+1;
func(cnt+1);
visit[i]=false;
}
}
}
}
건
package day_0509;
import java.util.Scanner;
public class BOJ15649 {
static int n, m;
static int[] isSelected;
static boolean[] isVisited;
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
n = s.nextInt();
m = s.nextInt();
isSelected = new int[m];
isVisited = new boolean[n + 1];
permu(0);
}
static void permu(int cnt) {
if (cnt == m) {
for (int i = 0; i < m; i++) {
System.out.print(isSelected[i] + " ");
}
System.out.println();
return;
}
for (int i = 1; i <= n; i++) {
if (!isVisited[i]) {
isSelected[cnt] = i;
isVisited[i] = true;
permu(cnt+1);
isVisited[i] = false;
}
}
}
}
용문
class BJ15649 {
private var N = 0
private var M = 0
private var selectedNum: [Int] = []
private var selected: [Bool] = []
func solve() {
readComponents()
calc()
}
private func readComponents() {
let temp = readLine()!.split(separator: " ").map { Int($0)! }
self.N = temp[0]
self.M = temp[1]
selected = .init(repeating: false, count: N)
selectedNum = .init(repeating: 0, count: M)
}
private func calc() {
permutation(count: 0)
}
private func permutation(count: Int) {
if count == M {
printAnswer()
return
}
for index in selected.indices {
if selected[index] { continue }
selected[index] = true
selectedNum[count] = index + 1
permutation(count: count + 1)
selected[index] = false
}
}
private func printAnswer() {
var resultString = ""
for num in selectedNum {
resultString.append("\\(num) ")
}
resultString.removeLast()
print(resultString)
}
}
BJ15649().solve()