본문 바로가기
알고리즘/BFS|DFS

[프로그래머스 연습문제 level_3 ] 네트워크

by happyhelen 2023. 11. 16.

 

처음 생각

무조건 dfs 다.

 

 

내가 푼 방법

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

        for(int i=0; i<visited.length; i++){
            if(visited[i] == 0){
                answer++;
                dfs(i);
            }
        }
        
        return answer;
    }
    
    static void dfs(int node){
        visited[node] = 1;
        
        for(int next=0; next<N; next++){
            if(visited[next] == 0 && Computers[node][next] ==1){
                dfs(next);
            }
        }
    }
}

 

 

우선 재귀함수 호출로 풀었다. 스택으로도 풀어봐야지.