백준 15650번 N과 M (2) JAVA

YB·2024년 9월 23일

링크텍스트

import java.util.*;
import java.io.*;

class Main {
    static int n,m;
    static int [] arr;
    static StringBuilder sb = new StringBuilder();
	public static void main (String[] args) throws java.lang.Exception {
	   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];
	   
	   dfs(0,0);
	   
	   System.out.print(sb);
	}
	static void dfs(int d,int start){
	    
	    if(d==m){
	        for(int i=0;i<arr.length;i++){
	            sb.append(arr[i]+" ");
	        }
	        sb.append("\n");
	        return;
	    }
	    
	    for(int i=start;i<n;i++){
	        arr[d]= i+1;
	        dfs(d+1,i+1);
	    }
	}
}

아래는 내가 처음에 boolean 사용한 코드, check 코드 빼도 됨.

import java.io.*;
import java.util.*;

public class Main{
    static StringBuilder sb = new StringBuilder();
    static int n,m;
    static int [] arr;
    static boolean [][] check;

    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());

    check = new boolean[n][n];
    arr = new int[m];

    dfs(0,0);

    System.out.print(sb);
    }


    public static void dfs(int d,int start){

        if(d==m){
            for(int i=0;i<arr.length;i++){
                sb.append(arr[i]+" ");
            }
            sb.append("\n");
            return;
        }

        for(int i=start;i<n;i++){
            if(!check[i][start]&&!check[start][i]){
                check[i][start]= true;
                check[start][i] = true;
                arr[d] = i+1;
                dfs(d+1,i+1);
                check[i][start]= false;
                check[start][i] = false;
            }
        }
    }
}

profile
안녕하세요

0개의 댓글