728x90
๐ section08 - 4 - ๋ถ๋ถ์งํฉ ๊ตฌํ๊ธฐ(DFS)
์์ฐ์ n
์ด ์ฃผ์ด์ง๋ฉด 1๋ถํฐ N๊น์ง
์ ์์๋ฅผ ๊ฐ๋ ์งํฉ์ ๋ถ๋ถ์งํฉ์ ๋ชจ๋ ๊ตฌํ์ฌ ์ถ๋ ฅ ์์ ์ ๊ฐ์ ์์๋ก ์ถ๋ ฅํ๋๋ฐ ๊ณต์งํฉ์ ์ถ๋ ฅํ์ง ์๋ ๋ฌธ์ ๋ค. N
์ ๋ฒ์๋ 1<=N<=10
์ธ๋ฐ ๋ง์ฝ, N
์ด 10๊ฐ๋ผ๋ฉด ๋ด๊ฐ ๊ตฌํด์ผ ํ ๋ถ๋ถ์งํฉ์ ๊ฐ์๋ 2^10-1 = 1,024-1(๊ณต์งํฉ)= 1,023
๊ฐ์ด๋ค. ์ฌ๊ท์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๋ถ๋ถ์งํฉ์ ์ฐพ์๊ฐ ๋ ๋ค์์ฒ๋ผ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ฉด ์ดํดํ๊ธฐ๊ฐ ์ฝ๋ค.
// ์
๋ ฅ
3
// ์ถ๋ ฅ
1 2 3
1 2
1 3
1
2 3
2
3
- ๊ธธ์ด
N
๋งํผ ๋น ๋ฐฐ์ด์ 0์ผ๋ก ์ ์ธํ๋ค. (๋ง์ง๋ง์index
๋ฅผ ์ถ๋ ฅํ๋ฉด ๊ทธ๊ฒ์ด ๋ถ๋ถ์งํฉ์ด ๋๋ค.) - ํ์ฌ
L
๋ ๋ฒจ ์ผ ๋,visit[v] = 1
๋ก ์ ์ธํ์ฌ ์ฌ๊ท์ ์ผ๋ก ์ํํ๊ณvisit[v] = 0
๋ก ์ ์ธํ์ฌ ์ฌ๊ท์ ์ผ๋ก ์ํํ๋ค. - ํ ๊ฐ์ง(branch)๊ฐ ๋๋๋ฉด ๊ฐ์ ์ถ๋ ฅํ๋ค.
728x90
let n = 3;
console.log(solution(3));
function solution(n) {
let visit = Array.from({ length: n + 1 }, () => 0); // n๋ฒ๊น์ง idx๊ฐ ์๊ฒจ์ผํ๋ฏ๋ก
let answer = [];
function DFS(v) {
if (v === n + 1) { // DFS๊ฐ 1๋ถํฐ ์์ํ๋ฏ๋ก v๊ฐ n+1์ผ๋๊น์ง ์ํํด์ผ ์ ์์ ์ผ๋ก index๊ฐ ์ถ๋ ฅ๋๋ค.
let temp = "";
for (let i = 0; i < visit.length; i++) {
if (visit[i]) temp += (i + " ");
}
answer.push(temp.trim());
} else {
visit[v] = 1;
DFS(v + 1);
visit[v] = 0;
DFS(v + 1);
}
}
DFS(1);
return answer.join("\n");
}
๐๐ฝ
1 2 3
1 2
1 3
1
2 3
2
3
๋ฐ์ํ
๋๊ธ