[백준] 2606 바이러스 - javascript

Yongwoo Cho·2021년 10월 14일
0

알고리즘

목록 보기
12/104

📌 문제

https://www.acmicpc.net/problem/2606

📌 풀이

let input = require("fs").readFileSync("/dev/stdin").toString().split("\n");
let node = Number(input[0]);
let edge_num = Number(input[1]);
let graph = [...new Array(node + 1)].map(() => []);
let visited = [...new Array(node + 1)].fill(0);
let ans = 0;
// 그래프 생성
for (let i = 0; i < edge_num; i++) {
  let start = Number(input[i + 2].split(" ")[0]);
  let end = Number(input[i + 2].split(" ")[1]);
  graph[start].push(end);
  graph[end].push(start);
}
// 1번노드 방문처리해주고 dfs 시작
visited[1] = 1;
function dfs(start) {
  for (let end of graph[start]) {
    if (!visited[end]) {
      visited[end] = 1;
      ans++;
      dfs(end);
    }
  }
}
dfs(1);
console.log(ans);

✔ 알고리즘 : DFS

✔ 간선의 정보를 입력받아서 그래프를 생성

✔ 1번 노드부터 바이러스 걸리므로 visited[1] = 1

✔ 1번 노드를 dfs의 시작점으로 하여 dfs탐색

✔ 방문하지 않은 노드가 있으면 방문처리 후 ans 1증가

✔ 난이도 : 백준 기준 실버3

profile
Frontend 개발자입니다 😎

0개의 댓글