네트워크

박상윤·2023년 8월 9일
0

https://school.programmers.co.kr/learn/courses/30/lessons/43162

각 노드가 서로 연결되어있으면 하나의 네트워크 안에 존재하는 것이다.
즉, 네트워크의 갯수를 알기 위해선 서로 연결되지 않은 경우를 count해주면 된다.

방문하지 않은 노드가 존재한다면, 우선 그 노드를 통해 생기는 하나의 네트워크를 추가해주고,
그 노드와 연결된 다른 노드들을 방문처리 해준다. 다른 노드를 탐색할때, 여전히 방문하지 않은 노드가 존재한다면, 그 노드로 인해 새로운 네트워크가 생기므로 마찬가지로 하나의 네트워크를 추가해준다.

풀이 코드

import java.util.*;

class Solution {
    
    public static boolean[] visited;
    
    public int solution(int n, int[][] computers) {
        int answer = 0;

        visited = new boolean[n];

        Arrays.fill(visited,false);

        for (int i = 0; i < n; i++) {
            if(visited[i] == false){ // 방문 처리가 안된 경우
                dfs(i,computers); // dfs 넣어줘
                answer++; // false다? 새로운 네트워크의 시작
            }
        }

        return answer;
    }

    // 서로 연결되어 있는 경우 네트워크 1추가
    public void dfs(int i, int[][] computers){
        visited[i] = true;

        for (int j = 0; j < computers[i].length; j++) {
            if(visited[j] == false && computers[i][j] == 1){
                dfs(j,computers);
            }
        }
    }
}

0개의 댓글