[알고리즘] 프로그래머스 - 네트워크

fooooif·2021년 6월 23일
0
post-thumbnail

✍ 문제

👏 풀이과정

문제를 보면 전형적인 dfs,bfs 알고리즘 문제이다. dfs와 bfs 두개 방식을 따로 풀었다.

import java.util.*;
class Solution {
    static boolean[] visit= new boolean[200];
    static int[][] network = new int[200][200];
    static Queue<Integer> queue = new LinkedList<>();
    public int solution(int n, int[][] computers) {
        
        int answer = 0;
        
        network = computers;
        visit = new boolean[n];
        // 1. dfs
         for(int i = 0 ; i < n; i++){
             if(visit[i] == false){
                 answer++;
                 dfs(i);
                
             }
            
         }
        int aa = 0;
        // 2. bfs
        for(int i = 0 ; i < n ; i++){
            if(visit[i] == false){
                visit[i] = true;
                queue.add(i);
                answer++;
            }
            while(!queue.isEmpty()){
                aa = queue.poll();
                visit[aa] = true;
                for(int j = 0; j < n ; j++){
                    if(network[aa][j] == 1 && visit[j] == false){
                        queue.add(j);
                    }
                }
                
            }
            
        }

        
        return answer;
    }
    
    
    static void dfs(int pre){
        visit[pre] = true;
        for(int i = 0 ; i < network.length; i++){
            if(network[pre][i] == 1 && visit[i] == false){
                dfs(i);
            }
        }
    }
    
}
profile
열심히 하자

0개의 댓글