새소식

Programmers

[Programmers] 네트워크 문제 - (javascript)

  • -
728x90
문제 이름 :  네트워크

 

<<< 문제 내용 >>>

 

function solution(n, c) {
    var answer = 0;
    let dic = Array.from(Array(n), () => new Array(0));
    
    for(let i=0; i<n; i++){
        for(let j=i+1; j<n; j++){
            if(c[i][j] === 1){
                dic[i].push(j);
                dic[j].push(i);
            }
        }
    }
    
    let visited = new Array(n).fill(false);
    
    const bfs = (idx) => {
        let queue = [idx];
        
        visited[idx] = true;
        
        while(queue.length){
            idx = queue.shift();
            
            while(dic[idx].length){
                let temp = dic[idx].shift();
                
                if(!visited[temp]){
                    queue.push(temp);
                    visited[temp]=true;
                }
            }
        }    
    }
    
    for(let i=0; i<n; i++){
        if(!visited[i]){
            bfs(i);
            answer++;
        }
    }
    
    return answer;
}

 

1. graph에서 bfs를 사용한다.

2. 방문되지 않은 노드만 bfs를 실행한다.

3. 그때 갯수를 올려주면 끝

 

도움이 되셨다면 공감 부탁드립니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.