DFS로 노드를 방문하되, 반복문으로 방문하지 않은 노드가 있는지 체크하면 된다. break문 까먹어서 애를 먹었다;
import java.util.*;
class Solution {
public int solution(int n, int[][] computers) {
int answer = 0;
boolean[] visited = new boolean[n]; //방문 표시 배열
int v_count = 0; //방문한 노드 개수
Stack<Integer> st = new Stack<>(); //dfs를 위한 스택
st.push(0); //0번노드부터 방문
//visited[0] = true; //방문 표시
//모든 노드를 방문할 때 까지 반복
while(v_count < n){
while(!st.isEmpty()){
int v = st.pop(); //스택에서 꺼냄
visited[v] = true; //방문 표시
v_count++; //방문 노드 개수 +1
for(int i=0;i<n;i++){
if(computers[v][i] != 0 && !visited[i] && i !=v){
visited[i] = true;
st.push(i);
}
}
}
answer++; //네트워크 수 계산
//방문하지 않은 컴퓨터 탐색
for(int i=0;i<visited.length;i++){
if(!visited[i]){
st.push(i);
break;
}
}
}
return answer;
}
}