문제
입출력 예
풀이
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
const [n, m] = input.shift().split(' ').map(Number);
const arr = input.map((el) => el.split(' ').map(Number));
const solution = (n, arr) => {
let answer = 0;
let visited = Array.from(Array(n + 1), () => 0);
const graph = Array.from(Array(n + 1), () => []);
for (let [a, b] of arr) {
graph[a].push(b);
graph[b].push(a);
}
const dfs = (node) => {
visited[node] = 1;
for (let next of graph[node]) {
if (!visited[next]) {
dfs(next);
}
}
};
for (let i = 1; i <= n; i++) {
if (!visited[i]) {
dfs(i);
answer++;
}
}
return answer;
};
console.log(solution(n, arr));
- 프로그래머스 섬의 개수 문제와 동일한 문제이다.