dfs를 사용하여, 시작노드부터 방문가능한 노드들을 모두 true로 바꿔주자. for문을 돌면서 이미 방문한 노드는 같은 네트워크안에 존재하므로 answer++할 필요 없고, 방문하지않은 노드들을 방문할떄 다른 네트워크에 있으므로 answer++하자.
function solution(n, computers) {
var answer = 0;
let graph = {}
let visited = new Array(n).fill(false);
computers.map((data,idx)=>{
data.map((d,i)=>{
if(d === 1){
graph[idx] === undefined ? graph[idx] = [i] : graph[idx] = [...graph[idx],i]
}
})
})
const dfs = (graph, start) =>{
if(visited[start]) return 0;
else{
visited[start] = true;
let needVisit = graph[start];
for(var i =0; i<needVisit.length; i++){
dfs(graph,needVisit[i])
}
}
}
for(var i = 0; i<n; i++){
if(!visited[i]){
answer++;
dfs(graph,i)
}
}
return answer;
}
dfs가 아직 조금 부족하다는것을 느꼈다. 그래프관련된 문제들을 더 많이 풀면서 감을 익여야겠따. 뿐만 아니라 스택을 이용하여 풀어보는 방식도 고려해보자!