yunicornlab

백준 2606번 바이러스 JavaScript 풀이 [DFS] 본문

Coding Test/Practice

백준 2606번 바이러스 JavaScript 풀이 [DFS]

yunicornlab 2024. 7. 21. 16:38
반응형

백준 2606번 바이러스 문제를 자바스크립트로 DFS 알고리즘을 이용해서 풀어보았다. 

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

 

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');

// 컴퓨터의 수
let n = Number(input[0]);
// 연결 수
let m = Number(input[1]);
// 주어진 연결 정보
let pair = [];
for (let i=2; i<=m+1; i++) {
    pair.push(input[i].split(' ').map(Number));
}

// 연결 그래프 생성
let graph = new Array(n+1).fill([]);
for (let i=0; i<m; i++) {
  let [start, end] = pair[i];
  graph[start] = [...graph[start], end];
  graph[end] = [start, ...graph[end]];
}

// 방문처리
let visited = new Array(n+1).fill(false);

// 결과
let result = 0;

function dfs(graph, node, visited) {
  // 방문 처리
  visited[node] = true;

  for (let v of graph[node]) {
    // 방문하지 않은 노드이면 dfs 재귀
    if (!visited[v]) {
      result++;
      dfs(graph, v, visited);
    }
  }
}
dfs(graph, 1, visited)
console.log(result)
반응형