Lewis's Tech Keep

[프로그래머스] 네트워크 본문

JAVA/알고리즘

[프로그래머스] 네트워크

Lewis Seo 2021. 2. 16. 01:17

- dfs 

  - 노드들은 모두 1의 값을 가지고 있음

  - 1 ~ n 까지 노드 중 [1][1], [2][2], [3][3] 중심으로 해당 노드들을 중심으로 dfs 재귀

  - 엣지들을 확인하며 엣지들 값이 존재하면 ex( (1, 2) )

  - 2를 중심으로 다시 재귀 확인 -> ( 2 -> or 3 )

  - dfs 재귀를 돌면서 [1][1] 확인 끝나면 +1 다음은 [2][2] 로 검사

  - 그러나 [2][2] 가 이미 존재했다면 [1][2] 엣지를 통해 들어갔던 dfs 재귀로 인해 이미 체크 완료

  - 답 완성

 

더보기
class Solution {
    static Boolean dfs(int[][] computers,int n) {
        if(computers[n][n] == 0) {
            return false;
        }
        computers[n][n] = 0;
        for(int i=0;i<computers.length;i++) {
            if(computers[n][i] > 0) {
                dfs(computers, i);
            }
        }
        return true;
    }
    
    public int solution(int n, int[][] computers) {
        int answer = 0;
        for(int i=0; i< n; i++) {
            if(computers[i][i] > 0 && dfs(computers, i)) {
                answer++;
            }
        }
        return answer;
    }
}
Comments