https://www.acmicpc.net/problem/2606
2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍
www.acmicpc.net
// const input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n");
function dfs(graph, startNode) {
const visited = [];
let needVisit = [];
needVisit.push(startNode);
while (needVisit.length !== 0) {
const node = needVisit.pop();
if (!visited.includes(node)) {
visited.push(node);
let nodes = graph[node];
needVisit = [...needVisit, ...nodes.sort((a, b) => b - a)];
}
}
return visited;
}
const input = require("fs")
.readFileSync("./example.txt")
.toString()
.trim()
.split("\n");
const computerCount = parseInt(input.shift());
const connectComputerCount = parseInt(input.shift());
let graph = [...Array(computerCount + 1)].map((e) => []);
for (let i = 0; i < connectComputerCount; i++) {
const [start, end] = input[i].split(" ").map(Number);
graph[start].push(end);
graph[end].push(start);
}
console.log(dfs(graph, 1).length - 1);
노드 1부터 시작해 연결되어 있는 모든 노드를 탐색 후 노드 1을 제외한 노드를 구해야 하기 때문에 -1을 해준다.
앞으로 봐도 뒤로 봐도 bfs, dfs문제이다. 맘에 드는 거 사용하면 될듯하다.
'코딩테스트 연습' 카테고리의 다른 글
[백준] 1929번 소수 구하기 (JavaScript) (0) | 2024.01.16 |
---|---|
[백준] 1463번 1로 만들기 (JavaScript) (0) | 2024.01.16 |
[백준] 1260번 DFS와 BFS (JavaScript) (0) | 2024.01.16 |
[Softeer] 회의실 예약 (0) | 2023.09.21 |
[Softeer] 금고털이 (0) | 2023.09.20 |