BOJ 15651: N과 M (3) https://www.acmicpc.net/problem/15651
중복이 가능
하므로 방문 처리
를 해주지 않아도 된다.import java.util.*;
import java.io.*;
public class Main {
static int N, M;
static int[] arr;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
sc.close();
arr = new int[N];
dfs(0);
System.out.println(sb);
}
static void dfs(int depth) {
if(depth == M) {
for(int i=0; i<M; i++) {
sb.append(arr[i]+" ");
}
sb.append("\n");
return;
}
for(int i=1; i<=N; i++) {
arr[depth] = i;
dfs(depth + 1);
}
}
}
return;
을 해주지 않아 ArrayIndexOutOfBoundsException
이 발생했다. if(depth == M) {
for(int i=0; i<M; i++) {
sb.append(arr[i]+" ");
}
sb.append("\n");
return; // 해줘야 탈출함
}
StringBuilder
를 사용하면 된다.