๐Ÿง  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"));