728x90
๋ฐ์ํ
๐ 04 - ๋ถ๋ถ์งํฉ ๊ตฌํ๊ธฐ(DFS)
์์ฐ์ N์ด ์ฃผ์ด์ง๋ฉด 1๋ถํฐ N๊น์ง์ ์์๋ฅผ ๊ฐ๋ ์งํฉ์ ๋ถ๋ถ์งํฉ์ ๋ชจ๋ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค. ์ฒซ ๋ฒ์งธ ์ค๋ถํฐ ๊ฐ ์ค์ ํ๋์ฉ ๋ถ๋ถ์งํฉ์ ์๋์ ์ถ๋ ฅ์์ ์ ๊ฐ์ ์์๋ก ์ถ๋ ฅํด์ผ ํ๋ค. ๋จ, ๊ณต์งํฉ์ ์ถ๋ ฅํ์ง ์๋๋ค.
์
๋ ฅ์์
3
์ถ๋ ฅ์์
1 2 3
1 2
1 3
1
2 3
2
3
๋ถ๋ถ์งํฉ์ ๊ฐ์๋ 2^N ์ด์ง๋ง ๊ณต์งํฉ์ ์ถ๋ ฅํ์ง ์์ผ๋ฏ๋ก -1์ ํด์ค๋ค. N์ด 3์ด๋ฉด ์ถ๋ ฅํด์ผํ๋ ๋ถ๋ถ์งํฉ์ ๊ฐ์๋ 7๊ฐ๊ฐ ๋๋ค. ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด ๋ถ๋ถ์งํฉ์ ์ฐพ์๊ฐ ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ฉด์ ์ดํด๋ฅผ ํ๋ฉด ๋์์ด ๋๋ค.
๐ ์์ค ์ฝ๋
function solution(n) {
let answer = [];
let ch = Array.from({ length: n + 1 }, () => 0);
function DFS(v) {
if (v === n + 1) {
let tmp = '';
for (let i = 1; i <= n; i++) {
if (ch[i] === 1) tmp += i + ' ';
}
if (tmp.length > 0) answer.push(tmp.trim());
} else {
ch[v] = 1; // ํฌํจ ํ๋ค.
DFS(v + 1);
ch[v] = 0; // ํฌํจ ์ํ๋ค.
DFS(v + 1);
}
}
DFS(1);
answer = answer.join('\n');
return answer;
}
console.log(solution(3));
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 8] 06 - ๋ฐ๋์ด ์น์ฐจ (0) | 2022.10.25 |
---|---|
[JavaScript/section 8] 05 - ํฉ์ด ๊ฐ์ ๋ถ๋ถ์งํฉ (0) | 2022.10.21 |
[JavaScript/section 8] 03 - ์ด์งํธ๋ฆฌ ์ํ (0) | 2022.10.18 |
[JavaScript/section 8] 02 - ์ด์ง์ ์ถ๋ ฅ(์ฌ๊ท) (0) | 2022.10.14 |
[JavaScript/section 8] 01 - ์ฌ๊ทํจ์ (0) | 2022.10.14 |