-
๋ฌธ์ 71. ๊น์ด ์ฐ์ ํ์๐ง codingtest/javascript 100์ 2022. 4. 9. 08:50728x90
"๊น์ด์ฐ์ ํ์" ์ด๋?
- ๋ชฉํํ ๋ ธ๋๋ฅผ ์ฐพ๊ธฐ ์ํด ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ๋ ธ๋์ ์์์ผ๋ก ๊น์ด ๋ค์ด๊ฐ๋ค๊ฐ ๋ชฉํ ๋ ธ๋๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด ์ฒ์ ๋ฐฉ๋ฌธํ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ๋ ธ๋๋ถํฐ ๊ทธ ์์ ๋ ธ๋๋ก ํ๊ณ ๋๋ ๊ฒ์๋ฐฉ๋ฒ
// ๋ฐ์ดํฐ graph = { E: ["D", "A"], F: ["D"], A: ["E", "C", "B"], B: ["A"], C: ["A"], D: ["E", "F"], }; // ์ถ๋ ฅ E D F A 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 stack = [start]; // ๋งจ์ฒ์ 'E' ๋ฅผ ๋ฃ์ด์ค๋ค while (stack.length != 0) { // stack์ ๊ธธ์ด๊ฐ 0์ด ์๋๋๊น์ง ๋๋ค let n = stack.pop(); // stack ์ ๋งจ ๋์์๋ฅผ ์ถ์ถ // console.log(n) if (!visited.includes(n)) { //๋ง์ฝ ๋น๋ฐฐ์ด(visited)์ stack.pop() ์์๊ฐ ์๋ค๋ฉด --> ์ถ๋ ฅ E D F A C B ์์ ์ํ๋ฒณ์ด ๊ฒน์น์ง ์์ผ๋ฏ๋ก ์กฐ๊ฑด์ ๋ฃ์ด์ค๋ค. visited.push(n); let sub = graph[n].filter((x) => !visited.includes(x)); //filter ํจ์๋ฅผ ์ฌ์ฉ, graph์ key ๊ฐ์ ์ฐธ๊ณ , value๋ฅผ ํ์ํ์ฌ visited ๋ฐฐ์ด์ ํฌํจ๋์ด ์์ง ์์ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด์ค๋ค. for (let i of sub) { stack.push(i); } } } return visited; } console.log(dfs(graph, "E"));
'๐ง codingtest > javascript 100์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฌธ์ 73. ์ต๋จ ๊ฒฝ๋ก ์ฐพ๊ธฐ (0) 2022.04.12 ๋ฌธ์ 72. ๋๋น ์ฐ์ ํ์ (0) 2022.04.09 ๋ฌธ์ 70. ํ๋ ฌ ๊ณฑํ๊ธฐ (0) 2022.04.06 ๋ฌธ์ 69. ๊ณจ๋๋ฐํ์ ์ถ์ธก (0) 2022.04.04 ๋ฌธ์ 66. ๋ธ๋ญํ ์๊ธฐ (0) 2022.04.01