반응형

 

[광고 누르면 오늘의 행운 상승!!]

https://programmers.co.kr/learn/courses/30/lessons/43162?language=java

 

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

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

programmers.co.kr

기본 DFS문제

나는 그래프로 구현하였다. 
2차원 그래프로 서로의 정점을 이어주고
visit배열을 이용하여 서로 이어져있는지 확인하였다.

쉬움.

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

class Solution {
    static ArrayList<ArrayList<Integer>> graph;
    static boolean[] visit;
    
    public int solution(int n, int[][] computers) {
        int answer = 0;
        
        visit = new boolean[n];
        graph = new ArrayList<>();
        
        for(int i = 0; i < n; i++){
            graph.add(new ArrayList<>());
        }
        for(int i = 0; i< n; i++){
            for(int j = 0; j< n; j++){
                if(i == j) continue;
                if(computers[i][j] == 1) graph.get(i).add(j);
            }
        }

        for(int i = 0; i< n; i++){
            if(!visit[i]){
                dfs(i);
                answer++;
            }
        }
        return answer;
    }
    private static void dfs(int node){
        
        for(Integer n : graph.get(node)){
            if(!visit[n]){
                visit[n] = true;
                dfs(n);
            }
        }
    }
}
반응형

+ Recent posts