[DFS] 6. ๋ถ๋ถ ์งํฉ ๊ตฌํ๊ธฐ
<<ํ์ด>>
ํญ์ ๊ธฐ์ตํ์ 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);
}
}
์ฌ๊ทํจ์์ ๋ํด ์ ์ฒด์ ์ธ ์ดํด๋๋ฅผ ์ฌ๋ฆฌ๊ณ ์์ง๋ง ์์ง ๋ถ์กฑํ ๊ฒ ๊ฐ๋ค. ๊ณ์ ๊พธ์คํ ๊ณต๋ถํด ๋๊ฐ์.