알고리즘/프로그래머스

네트워크

베리영young 2023. 12. 29. 02:41

사용 알고리즘: bfs

사용 언어: java

 

import java.util.*;
import java.io.*;

class Solution {
    static boolean[] visited ;
    public int solution(int n, int[][] computers) {
        int answer = 0;
        visited = new boolean[n];
        for(int i=0; i<n; i++){
            if(!visited[i]){
                answer++;
                visited[i] = true;
                bfs(i, n, computers);
            }
        }
        
        return answer;
    }
    
    private static void bfs(int start, int n, int[][] computers){
        Queue<Integer> q = new ArrayDeque<>();
        q.offer(start);
        
        while(!q.isEmpty()) {
            int v = q.poll();
            
            for(int i=0; i<n; i++){
                if(computers[v][i] == 1 && !visited[i]){
                    visited[i] = true;
                    q.offer(i);
                }
            }
        }
    }
}

 

알고리즘 선택 이유:

같은 구역끼리 묶어서, 묶음 수가 몇 개인지 확인하는 문제

 

ps. 현재 내 수준 - 지금 이 정도 수준의 bfs는 그냥 풀 수 있게 됨

 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

등굣길  (1) 2023.12.30
체육복  (0) 2023.12.30
가장 먼 노드  (1) 2023.12.27
타겟 넘버  (1) 2023.12.27
완주하지 못한 선수  (0) 2023.12.25