์ฝ”๋”ฉํ…Œ์ŠคํŠธ

[DFS] 6. ๋ถ€๋ถ„ ์ง‘ํ•ฉ ๊ตฌํ•˜๊ธฐ

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2024. 2. 2. 09:02

<<ํ’€์ด>>

 

ํ•ญ์ƒ ๊ธฐ์–ตํ•˜์ž DFS ๋ฌธ์ œ๋Š” if์™€ else ๊ทธ๋ฆฌ๊ณ  ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์Šคํƒ ํ”„๋ž˜์ž„์„ ๋”ฐ๋ฅธ๋‹ค!!

 

์ด ๋ฌธ์ œ๋Š” DFS๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๊ตฌ์„ฑ์ด ํŠธ๋ฆฌ๋กœ ๋ณธ๋‹ค๋ฉด ์™ผ์ชฝ์€ ์ถ”๊ฐ€ ํ•ด์ค€๋‹ค. ์˜ค๋ฅธ ์ชฝ์€ ์ถ”๊ฐ€ ์•ˆ ํ•œ๋‹ค๋ผ๊ณ  ์žก๊ณ  ์‹œ์ž‘์„ ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ์›๋ฆฌ๋กœ ํ•ด์„œ ์ฝ”๋”ฉ ๋กœ์ง์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•œ๋‹ค.

 

์ด๋•Œ ch์ด๋ผ๋Š” ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™” ์‹œํ‚ค๊ณ  ์™ผ์ชฝ์œผ๋กœ ๊ฐ€๋ฉด 1๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ€๋ฉด 0์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ๋‚œ ๋’ค ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์ด ์›์†Œ ๊ฐฏ์ˆ˜๊ฐ€ ์ผ์น˜ํ•˜๊ฒŒ ๋˜๋ฉด ch ๋ฐฐ์—ด์— ์žˆ๋Š” 1์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ‘ผ๋‹ค.

 

 

class Main{

    static int n;
    static int[] ch;
    public void DFS(int L) {
        if (L == n + 1) {
            String tmp = "";
            for (int i = 1; i <= n; i++) {
                if(ch[i] == 1) tmp += (i + " ");
            }
            if (tmp.length() > 0) System.out.println(tmp);

        }else {
            ch[L] = 1;
            DFS(L + 1);
            ch[L] = 0;
            DFS(L + 1);
        }
    }

    public static void main(String[] args) {
        Main T = new Main();
        n = 3;
        ch = new int[n + 1];
        T.DFS(1);
    }
}

 

์žฌ๊ท€ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์ „์ฒด์ ์ธ ์ดํ•ด๋„๋ฅผ ์˜ฌ๋ฆฌ๊ณ  ์žˆ์ง€๋งŒ ์•„์ง ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๊ณ„์† ๊พธ์ค€ํžˆ ๊ณต๋ถ€ํ•ด ๋‚˜๊ฐ€์ž.