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

AMUD·2022년 9월 30일
0

Algorithm

목록 보기
47/78

문제


문제링크

접근

  • 연결된 모든 곳을 탐색한다는 점에서 dfs를 떠올렸다.
  • union-find와 같이 아예 집합을 다르게 구분을 해야한다는 생각을 잠깐 했다가, 출발점으로 구분을 하면 되겠다 생각하였다.
  • 그래서 dfs를 제어 반복문 안에서 호출하여 해결하였다.

소스 코드

class Main {
    public static void main(String[] args) throws Exception {
        int[][] computers = { { 1, 1, 0 }, { 1, 1, 0 }, { 0, 0, 1 } };
        int n = 3;

        Solution sol = new Solution();
        System.out.println("result : " + sol.solution(n, computers));
    }
}

class Solution {
    boolean[] isConnected;
    int length;

    public int solution(int n, int[][] computers) {
        int answer = 0;
        length = computers.length;
        isConnected = new boolean[length];

        for (int i = 0; i < length; i++) {
            if (!isConnected[i]) {
                dfs(i, computers);
                answer++;
            }
        }
        return answer;
    }

    void dfs(int i, int[][] computers) {
        isConnected[i] = true;

        for (int j = 0; j < length; j++) {
            if (computers[i][j] == 1 && !isConnected[j]) {
                dfs(j, computers);
            }
        }
    }
}
profile
210's Velog :: Ambition Makes Us Diligent

0개의 댓글