알고리즘/문제풀이

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

LIRI 2025. 4. 26. 20:08

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

문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제 분석

조건

  • 배열로 연결관계가 포함된 컴퓨터가 있다.
  • 컴퓨터끼리 직접, 혹은 간접적으로 연결되어 있으면 같은 네트워크라 하는데 전체 네트워크의 수를 구하는 문제

풀이방법

  • 0번 컴퓨터부터 n-1번 컴퓨터까지 반복문을 돌면서 방문하지 않은 컴퓨터에서 BFS를 돌린다.

코드

import java.util.*;

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]) {
                continue;
            }
            visited[i] = true;
            Deque<Integer> que = new ArrayDeque<>();
            que.add(i);
            answer++;
            while (!que.isEmpty()) {
                int now = que.poll();
                for (int link = 0; link < n; link++) {
                    if (computers[now][link] == 0) {
                        continue;
                    }
                    if (visited[link]) {
                        continue;
                    }
                    visited[link] = true;
                    que.add(link);
                }
            }
        }
        return answer;
    }
}

결과

++

레벨3이라기엔 쉽다

728x90