function solution(n, computers) {
var answer = 0;
let visited = Array(n).fill(0);
let stack = [];
for (let i = 0; i < n; i++) {
// 최초 방문 시
if (visited[i] === 0) {
stack.push(i);
visited[i] = 1;
// DFS
while (stack.length > 0) {
let c = stack.pop();
// 경로 연결 되어 있으면서 최초 방문일 경우
for (let j in computers[c]) {
if (computers[c][j] == 1 && visited[j] == 0) {
stack.push(j);
visited[j] = 1;
}
}
}
// 최초 방문이 일어날 때마다 집합이 생김
answer++;
}
}
return answer;
}
=> 아오, 최단 거리 구하는 문제가 아니라 방문 여부만 따져보면 되는데 진짜 완전 삽질했다. 그래도 하나 배운게, 최초 방문할 때마다 집합 개념이 발생한다고 보면 된다.