[프로그래머스] Lv3. 네트워크- JavaScript

이상돈·2023년 4월 14일
0
post-thumbnail

문제분류 : 코팅테스트 연습

난이도 : Level 3

출처 : 프로그래머스 - 네트워크

문제

제한사항

예제

📌 내가 생각한 풀이

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가 아직 조금 부족하다는것을 느꼈다. 그래프관련된 문제들을 더 많이 풀면서 감을 익여야겠따. 뿐만 아니라 스택을 이용하여 풀어보는 방식도 고려해보자!

profile
사람들의 더 나은 삶을 위한 개발자

0개의 댓글