class Solution {
public int solution(int n, int[][] computers) {
int answer = 0;
boolean[] visited = new boolean[n]; // 컴퓨터 방문 여부, boolean[] 초기값 false
for (int i = 0; i < n; i++) {
if (!visited[i]) { // 아직 방문하지 않은 경우
dfs(i, n, computers, visited); // DFS로 네트워크를 탐색하고 방문 처리
answer++; // 네트워크 개수 증가
}
}
return answer;
}
// DFS를 활용하여 네트워크 탐색
private void dfs(int com, int n, int[][] computers, boolean[] visited) {
visited[com] = true; // 현재 컴퓨터 방문 표시
for (int i = 0; i < n; i++) {
if (computers[com][i] == 1 && !visited[i]) {
dfs(i, n, computers, visited); // 연결된 다른 컴퓨터로 이동 (재귀 탐색)
}
}
}
}