https://school.programmers.co.kr/learn/courses/30/lessons/43162
각 노드가 서로 연결되어있으면 하나의 네트워크 안에 존재하는 것이다.
즉, 네트워크의 갯수를 알기 위해선 서로 연결되지 않은 경우를 count해주면 된다.
방문하지 않은 노드가 존재한다면, 우선 그 노드를 통해 생기는 하나의 네트워크를 추가해주고,
그 노드와 연결된 다른 노드들을 방문처리 해준다. 다른 노드를 탐색할때, 여전히 방문하지 않은 노드가 존재한다면, 그 노드로 인해 새로운 네트워크가 생기므로 마찬가지로 하나의 네트워크를 추가해준다.
풀이 코드
import java.util.*;
class Solution {
public static boolean[] visited;
public int solution(int n, int[][] computers) {
int answer = 0;
visited = new boolean[n];
Arrays.fill(visited,false);
for (int i = 0; i < n; i++) {
if(visited[i] == false){ // 방문 처리가 안된 경우
dfs(i,computers); // dfs 넣어줘
answer++; // false다? 새로운 네트워크의 시작
}
}
return answer;
}
// 서로 연결되어 있는 경우 네트워크 1추가
public void dfs(int i, int[][] computers){
visited[i] = true;
for (int j = 0; j < computers[i].length; j++) {
if(visited[j] == false && computers[i][j] == 1){
dfs(j,computers);
}
}
}
}