본문 바로가기

JavaScript

[백준 JavaScript] 2606번 바이러스

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

 

2606번: 바이러스

첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어

www.acmicpc.net

 

dfs로 풀면 됩니다!

dfs함수 만들어서 dfs 재귀로 풀어도 되는데 파이썬에서 항상 push, pop으로 풀어서 이렇게 풀었습니다.

 

<코드>

const inputs = require("fs").readFileSync("/dev/stdin").toString().split("\n");

const node = Number(inputs[0]);
const num = Number(inputs[1]);

const arr = [...new Array(node + 1)].map(() => []);
const visited = new Array(node + 1).fill(0);

for (let i = 2; i < num + 2; i++) {
  const input = inputs[i].split(" ");
  const [s, e] = input;
  arr[s].push(e);
  arr[e].push(s);
}

const q = [];
q.push(1);
visited[1] = 1;
ans = 0;
while (q.length !== 0) {
  c = q.pop();
  if (arr[c]) {
    arr[c].forEach((v) => {
      if (visited[v] === 0) {
        visited[v] = 1;
        ans++;
        q.push(v);
      }
    });
  }
}

console.log(ans);