๐ง codingtest/javascript 100์
๋ฌธ์ 72. ๋๋น ์ฐ์ ํ์
awesomeyelim
2022. 4. 9. 08:56
728x90
"๋๋น์ฐ์ ํ์" ์ด๋?
- ์ด๋ค ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ํ์ธํ ํ, ๋ชฉํํ ๋ ธ๋๊ฐ ์๋๋ฉด ๊ทธ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ์ ์ ๋ค ์ค์์ ์ฐ์ ์์๊ฐ ๋์ผํ ๋ค๋ฅธ ๋ ธ๋๋ฅผ ์ฐพ๊ณ ๊ทธ ์์์ ์์ผ๋ฉด ๊ทธ ๋ค์ ์์๋ ธ๋๋ฅผ ์ฐจ๋ก๋๋ก ์ฐพ๋ ๋ฐฉ๋ฒ์ด๋ค.(๊น์ด์ฐ์ ํ์์ ์ฐ์ฅ์ )
// ๋ฐ์ดํฐ
graph = {
E: ["D", "A"],
F: ["D"],
A: ["E", "C", "B"],
B: ["A"],
C: ["A"],
D: ["E", "F"],
};
// ์ถ๋ ฅ
E D A F C B
๋ฏธ๋ฆฌ ์๊ฐํด ๋ด์ผํ ๊ฒ
- ์์, ๊ฐ์ฒด์ ๊ทผ๋ฐฉ์(ํค๊ฐ, ๋ฒจ๋ฅ๊ฐ ์ถ์ถ๋ฐฉ์)
๋ต
let graph = {
E: ["D", "A"],
F: ["D"],
A: ["E", "C", "B"],
B: ["A"],
C: ["A"],
D: ["E", "F"],
};
function dfs(graph, start) {
let visited = [];
let queue = [start];
while (queue.length != 0) {
let n = queue.shift(); // queue ์ ๋งจ ์์ ์์๋ง ์ถ์ถํจ(๊น์ด ํ์๊ณผ ์ ์ผํ๊ฒ ๋ค๋ฅธ ๋ถ๋ถ)
// console.log(n)
if (!visited.includes(n)) {
visited.push(n);
let sub = graph[n].filter((x) => !visited.includes(x));
for (let i of sub) {
queue.push(i);
}
}
}
return visited;
}
console.log(dfs(graph, "E"));