μ½”λ”©ν…ŒμŠ€νŠΈ

[μΈν”„λŸ°/DFS/9.μ‘°ν•©κ΅¬ν•˜κΈ°] - μ • 리 쀑 -

μ‹œνλ¦¬ν‹°μ§€ν˜Έ 2024. 3. 26. 20:57

<<풀이>>

 

일단 λ‚΄κ°€ μƒκ°ν•œ λ…Όλ¦¬λŒ€λ‘œ 진행을 ν–ˆλŠ”λ° μ–΄λ””μ„ κ°€ λ§‰νžŒ 것 κ°™λ‹€ γ…‹γ…‹ γ… 

 

μ•„λ§ˆ 쀑간에 λ†“μ³€κ±°λ‚˜ μ‹€μˆ˜ν•œ 뢀뢄이 μžˆμ„ 것이라고 λ³Έλ‹€.

 

μ–΄λ–€ λ…Όλ¦¬λ‘œ μ›€μ§μ΄λŠ”μ§€ νŒŒμ•…μ€ λ˜μ§€λ§Œ μ—¬μ „νžˆ ν—·κ°ˆλ¦¬λŠ” DFS γ…œγ…‘γ…œ

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

class Main {
    static int[] ch;
    static ArrayList<Integer> list = new ArrayList<>();

    private void DFS(int L, int i, int n, int m) {

        if (L == m) {
            for (int x : list) {
                System.out.print(x + " ");
            }
            list.clear();
            return;
        }

        if (ch[i] == 1) return;
        else {
            ch[i] = 1;
            list.add(i);

            for (int j = 1; j <= n ; j++) {

                DFS(L+1, j, n, m);
                ch[i] = 0;
            }
        }
    }

    public static void main(String[] args) throws Exception{
        Main T = new Main();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        char[] arr = br.readLine().toCharArray();
        int n = Integer.parseInt(String.valueOf(arr[0]));
        int m = Integer.parseInt(String.valueOf(arr[2]));
        ch = new int[n+1];

        for (int i = 1; i <= n; i++) {
            T.DFS(0, i, n, m);
        }
    }
}

 

 

-κ°•μ‚¬λ‹˜ 풀이-

 

와 .. 정말 μ‹ κΈ°ν•˜κ²Œ ν’€μ—ˆλ‹€.'

 

κ°•μ‚¬λ‹˜ μ™ˆ " 이 ν’€μ΄λŠ” κ·Έλƒ₯ μ™Έμš°λŠ”κ²Œ μ’‹λ‹€!! "

 

일단 μ–΄λ–€ μ›λ¦¬μΈμ§€λŠ” κΉ¨λ‹¬μ•˜λ‹€. 쑰금 μžˆλ‹€κ°€ μ΅œμ’… 마무리 ν•˜κ² λ‹€.

import java.util.*;
class Main{
    static int[] combi;
    static int n, m;
    public void DFS(int L, int s){
        if(L==m){
            for(int x : combi) System.out.print(x+" ");
            System.out.println();
        }
        else{
            for(int i=s; i<=n; i++){
                combi[L]=i;
                DFS(L+1, i+1);
            }
        }
    }
    public static void main(String[] args){
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        n=kb.nextInt();
        m=kb.nextInt();
        combi=new int[m];
        T.DFS(0, 1);
    }
}