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

Yujin·2025년 6월 18일

CodingTest

목록 보기
25/51

문제

https://school.programmers.co.kr/learn/courses/30/lessons/43162


문제풀이 방법

  • 방문하지 않은 컴퓨터를 발견하면, 해당 컴퓨터를 시작점으로 DFS를 호출하여 그 컴퓨터와 연결된 모든 컴퓨터를 방문
  • DFS 호출이 끝나면 하나의 네트워크가 완료된 것이므로 answer 증가
  • 모든 컴퓨터를 확인할 때까지 반복

나의 코드

class Solution {
    public int solution(int n, int[][] computers) {
        int answer = 0;  
        boolean[] visited = new boolean[n]; 
        
        for (int i = 0; i < n; i++) {
            if (!visited[i]) {  // i번째 컴퓨터가 방문되지 않았다면
                dfs(computers, visited, i);  // 해당 컴퓨터에서 DFS 수행
                answer++;  // 네트워크 수 증가
            }
        }
        return answer;  
    }
    
    public void dfs(int[][] computers, boolean[] visited, int i) {
        visited[i] = true;  // 현재 컴퓨터를 방문한 것으로 표시
        
        for (int j = 0; j < computers.length; j++) {
            if (!visited[j] && computers[i][j] == 1) {  // j번째 컴퓨터가 방문되지 않았고, i와 연결되어 있다면
                dfs(computers, visited, j);  // j번째 컴퓨터에서 재귀적으로 DFS 수행
            }
        }
    }
}

0개의 댓글