문제 링크
- 각 컴퓨터마다 연결된 컴퓨터를 돌며 방문 체크를 한다.
- 각 dfs 시작을 네트워크 하나로 간주하고, 카운트한다.
import java.util.*;
class Solution {
boolean[] v;
public int solution(int n, int[][] computers) {
v = new boolean[n];
int answer = 0;
for(int i=0; i<n; ++i){
for(int j=0; j<n; ++j){
if(computers[i][j] == 1 && !v[i]){
dfs(computers, i, n);
answer++;
}
}
}
return answer;
}
public void dfs(int[][] computers, int idx, int n){
v[idx] = true;
for(int i=0; i<n; ++i){
if(computers[idx][i] == 1 && !v[i]) dfs(computers, i, n);
}
}
}
- 착실하게 문제의 요구사항을 따라가면 되는 문제였습니다.