[ 백준 알고리즘 ] Node.js 2606. 바이러스
2026. 2. 12. 10:26ㆍ코딩연습
1. 문제
https://www.acmicpc.net/problem/2606
2. 풀이방법
1) DFS 또는 BFS 로 풀어야 하는 이유
- 문제에 "전파", "확산" 이라는 표현
- 한 컴퓨터가 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 바이러스에 걸린다
- 1번 컴퓨터를 통해 바이러스에 걸리게 되는 컴퓨터의 수
const fs = require('fs').readFileSync(0, 'utf-8').toString().trim();
const inputs = fs.split('\n');
const N = Number(inputs[0]); // 컴퓨터의 수
const M = Number(inputs[1]); // 간선의 수
// 컴퓨터들이 연결된 그래프 생성
const graph = Array.from({length: N + 1}, () => []);
for(let i = 0; i < M; i++){
const [a, b] = inputs[i + 2].split(' ').map(Number);
graph[a].push(b);
graph[b].push(a);
}
// BFS 함수
function bfs(start) {
const queue = [];
const visited = new Array(N + 1).fill(false); // 컴퓨터 방문 여부 확인.
visited[start] = true;
queue.push(start);
while(queue.length > 0) {
const cur = queue.shift()
for(const next of graph[cur]) {
if(!visited[next]) {
visited[next] = true;
queue.push(next);
}
}
}
// 1번 컴퓨터는 제외해야 함.
return visited.filter(v => v === true).length - 1;
}
// 문제에서 1번 컴퓨터로부터 바이러스가 전파되기 때문.
console.log(bfs(1))'코딩연습' 카테고리의 다른 글
| [ 백준 알고리즘 ] Node.js 10025. 게으른 백곰 (0) | 2026.02.23 |
|---|---|
| [ 백준 알고리즘 ] Node.js 1806. 부분합 (0) | 2026.02.10 |
| [백준 알고리즘] Node.js 2167. 2차원 배열의 합 (0) | 2023.12.18 |
| [백준 알고리즘] Node.js 2057. 팩토리얼 분해 (1) | 2023.12.11 |
| [백준 알고리즘] Node.js 1485. 정사각형 만들기 (2) | 2023.12.07 |