Link
문제
풀이
(1) 재귀 DFS
var input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
const N = Number(input[0]);
const graph = Array.from({ length: N + 1 }, () => []);
for (let i = 2; i < input.length; i++) {
let [node1, node2] = input[i].split(" ").map(Number);
graph[node1].push(node2);
graph[node2].push(node1);
}
let answer = 0;
function dfsRecursive(graph, node, visited = {}) {
visited[node] = true;
answer += 1;
for (let g of graph[node]) {
if (visited[g]) continue;
dfsRecursive(graph, g, visited);
}
}
dfsRecursive(graph, 1);
console.log(answer - 1);
(2) 스택 DFS
var input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
const N = Number(input[0]);
const graph = Array.from({ length: N + 1 }, () => []);
for (let i = 2; i < input.length; i++) {
let [node1, node2] = input[i].split(" ").map(Number);
graph[node1].push(node2);
graph[node2].push(node1);
}
let answer = 0;
function dfsStack(graph, node) {
let visited = {};
let stack = [];
stack.push(node);
while (stack.length > 0) {
let g = stack.pop();
if (visited[g]) continue;
visited[g] = true;
answer += 1;
for (let n of graph[g]) {
if (visited[n]) continue;
stack.push(n);
}
}
}
dfsStack(graph, 1);
console.log(answer - 1);
(3) BFS
let input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
let idx = 0;
const COMPUTERS = Number(input[idx++]);
const CONNECTIONS = Number(input[idx++]);
const graph = Array.from({ length: COMPUTERS + 1 }, () => []);
let answer = 0;
for (let c = 0; c < CONNECTIONS; c++) {
const [c1, c2] = input[idx++].split(" ").map(Number);
graph[c1].push(c2);
graph[c2].push(c1);
}
const bfs = (start) => {
const visited = {};
const queue = [];
queue.push(start);
visited[start] = true;
while (queue.length > 0) {
const node = queue.shift();
for (let g of graph[node]) {
if (visited[g]) continue;
visited[g] = true;
queue.push(g);
answer += 1;
}
}
};
bfs(1);
console.log(answer);
'알고리즘 > 문제' 카테고리의 다른 글
[백준 | 실버 2 | JavaScript] 11724번, 연결 요소의 개수 (0) | 2025.03.07 |
---|---|
[백준 | 실버 2 | JavaScript] 1012번, 유기농 배추 (0) | 2025.03.06 |
[백준 | 실버 2 | JavaScript] 11725번, 트리의 부모 찾기 (0) | 2025.03.04 |
[프로그래머스 | Lv. 1 | JavaScript] 햄버거 만들기 (0) | 2025.02.27 |
[프로그래머스 | Lv. 1 | JavaScript] 숫자 짝꿍 (0) | 2025.02.26 |
※ 쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있습니다.