알고리즘/java
[백트래킹] 백준 15649번 N과 M (1) [Java]
코카쓰
2025. 4. 17. 22:38
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BackTracking {
public static void main(String[] args) throws IOException {
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());
boolean[] visit = new boolean[n];
int[] a = new int[m];
backTracking(n, m, visit, 0, a);
}
public static void backTracking(int n, int m, boolean[] visit, int c, int[] a) {
if(c == m) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < a.length; i++) {
sb.append(a[i]);
sb.append(" ");
}
sb.substring(0, sb.length() - 1);
System.out.println(sb);
return;
}
for (int i = 0; i < n; i++) { // 0, 1, 2, 3
if(!visit[i]) {
visit[i] = true;
a[c] = i + 1;
backTracking(n, m, visit, c + 1, a);
visit[i] = false;
}
}
}
}
백트래킹의 기초 문제.
조건에 만족하는 결과가 나왔을 때 return 해줘야 하는데
해주질 않아서 다른 결과가 나와 한참 고민했다.