[백트래킹] 백준 15651번 N과 M (3) [Java]

알고리즘/java 2025. 4. 18. 23:02

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.Arrays;

public class Main {

    static StringBuilder sb = new StringBuilder();
    
    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());
        int[] a = new int[m];
        
        backTracking(n, m, 0, a);
        
        System.out.println(sb);
        
    }
    
    public static void backTracking(int n, int m, int c, int[] a) {
        if(c == m) {
            sb.append(Arrays.toString(a).replace("[", "").replace("]", "").replace(",", ""));
            sb.append(" \n");
//			for (int i = 0; i < a.length; i++) {
//				sb.append(a[i]);
//			}
//			sb.substring(0, sb.length() - 1);
//			sb.append("\n");
            return;
        }
        for (int i = 0; i < n; i++) {
            a[c] = i + 1;
            backTracking(n, m, c + 1, a);
        }
    }

}

 

변경된 조건에 따라 visit을 판단할 필요가 없어져 지웠고

일반적인 dfs와 크게 다를 게 없는 문제가 되었다.

출력 부분만 while문을 돌던 것에서 Arrays.toString으로 변경