네트워크

han.user();·2023년 4월 17일
0

프로그래머스

목록 보기
82/87
post-thumbnail

class Solution {
    public int solution(int n, int[][] computers) {
        int answer = 0; // 통신이 가능한 컴퓨터의 개수를 저장할 변수
        boolean[] visited = new boolean[n]; // 방문한 컴퓨터를 체크할 배열

        for (int i = 0; i < n; i++) { // 모든 컴퓨터에 대해 DFS 탐색을 실행
            if (!visited[i]) { // 아직 방문하지 않은 컴퓨터에 대해서만 실행
                dfs(i, visited, computers); // DFS 탐색 실행
                answer++; // DFS 탐색을 마치고 난 후, 통신이 가능한 컴퓨터 개수를 1 증가시킴
            }
        }
        return answer; // 결과 반환
    }

    void dfs(int node, boolean[] visited, int[][] computers) {
        visited[node] = true; // 현재 노드 방문 체크
        for (int i = 0; i < computers.length; i++) { // 인접한 노드에 대해 DFS 탐색 실행
            if (computers[node][i] == 1 && !visited[i]) {// 연결되어 있고, 방문하지 않은 노드만 실행
                dfs(i, visited, computers); // DFS 탐색 실행
            }
        }
    }
}
  • DFS를 이용하여 인접한 노드를 방문하며 통신이 가능한 컴퓨터의 개수를 구합니다.
  • 모든 컴퓨터에 대해 DFS 탐색을 실행합니다.
  • 방문하지 않은 노드에 대해서만 DFS 탐색을 실행합니다.
  • DFS 탐색을 마치면 통신이 가능한 컴퓨터 개수를 1 증가시킵니다.
profile
I'm still hungry.

0개의 댓글