본문 바로가기
Algorithm/문제풀이

[프로그래머스] 네트워크(LV.3) by javascript - 깊이/너비 우선 탐색(DFS/BFS)

by 썸머워즈 2022. 4. 8.
반응형

▷ 문제 : 깊이/너비 우선 탐색(DFS/BFS) - 네트워크 LV.3

 

코딩테스트 연습 - 네트워크

네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있

programmers.co.kr

▷ 해결 날짜 : 2022.04.08
▷ 소요 시간 : 50분
▷ 풀이 과정 :

문제 자체에 이미 연결 정보가 주어져 그걸 가지고 서로 연결되어있는 집단의 개수가 총 몇 개인지 출력하는 문제이다.나름 구조가 평범한 그래프 탐색 알고리즘 문제와 비슷해서 생각보다 쉽게 풀었다.

 

좀 강박관념일수도 있는데, 사용하기 쉽게 그래프를 다시 한번 그리고 그걸 가지고 알고리즘을 실행시켜 구현하였다.

 

▷ 구현

function solution(n, computers) {
    const graph = [];
    computers.forEach(networks => {
        const data = [];
        networks.forEach((network, idx) => {
            if(network) data.push(idx);
        });
        graph.push(data);
    });
    
    const visit = [];
    let answer = 0;
    for(let i = 0; i < n ; i++){
        if(!visit.includes(i)) answer++;
        let needVisit = graph[i];
        while(needVisit.length){
            const node = needVisit.shift();
            if(!visit.includes(node)){
                visit.push(node);
                needVisit = [...needVisit, ...graph[node]];
            }
        }
    }
    return answer;
}


▷ 복기 :

구현하고 보니까 이미 매개변수로 연결정보가 다 들어가는데, 그걸 가지고 다시 그래프를 그릴 필요가 있었나 싶다.

반응형


댓글

TOP