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)
반응형