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

dia·2023년 11월 20일
0

풀이 방식

main

  1. 컴퓨터의 검사 여부를 저장할 check 배열 생성
  2. 컴퓨터를 하나씩 돌아가면서 depthFirstSearch 메소드 호출 (검사하지 않은 컴퓨터만)
  3. depthFirstSearch 메소드가 끝나면 네트워크 개수+1 (answer++)

depthFirstSearch

연결된 컴퓨터를 따라가다가 네트워크 하나를 모두 탐색하면 종료

  1. 해당 컴퓨터의 검사 여부를 true로 변경
  2. 선택한 컴퓨터에 (검사하지 않은) 다른 컴퓨터가 연결되어있으면 재귀호출
  3. 연결된 컴퓨터가 없을 때까지 재귀호출하다가 종료

구현

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

        System.out.println(solution(n, computers));
    }
    public static int solution(int n, int[][] computers) {
        int answer = 0;
        boolean[] check = new boolean[n];
        for (int pcIndex = 0; pcIndex < n; pcIndex++) {
            if (!check[pcIndex]) {
                depthFirstSearch(computers, pcIndex, check);
                answer++;
            }
        }
        return answer;
    }

    static void depthFirstSearch(int[][] computers, int pcIndex, boolean[] check) {
        check[pcIndex] = true;
        for (int i = 0; i < computers.length; i++) {
            if (pcIndex != i && computers[pcIndex][i] == 1 && check[i] == false)
                depthFirstSearch(computers, i, check);
        }
    }
}

*다른 분들의 코드를 참고하여 작성했습니다

profile
CS 메모장

0개의 댓글