고득점 Kit - DFS & BFS (네트워크)

2023. 4. 12. 12:44·📚 Data Architect/Programmers

💡 문제 파악

네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다.

예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때

컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다.

따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다.

컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오.


제한사항

  • 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다.
  • 각 컴퓨터는 0부터 n-1인 정수로 표현합니다.
  • i번 컴퓨터와 j번 컴퓨터가 연결되어 있으면 computers[i][j]를 1로 표현합니다.
  • computer[i][i]는 항상 1입니다.

입출력 예

n computers return
3 [[1, 1, 0], [1, 1, 0], [0, 0, 1]] 2
3 [[1, 1, 0], [1, 1, 1], [0, 1, 1]] 1

풀이

public class Solution {

    /* 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers */
    public int solution(int n, int[][] computers) {
        int answer = 0;

        // 방문 배열
        boolean[] check = new boolean[n];

        // 0 ~ -1개의 정점을 돌면서 방문여부 확인하면서
        // 방문안된 정점을 시작으로 간선의 연결을 확인한다.
        for (int i=0; i<n; i++) {
            if (!check[i]) {
                // 방문안된 정점은 다른 네트워크 이므로 answer++을 해줌.
                answer++;
                // dfs 호출
                dfs(i, n, computers, check);
            }
        }
        return answer;
    }

    // 시작정점을 기점으로 연결된 모든 정점을 방문처리한다.
    // 이과정을 거치면 네트워크 한개가 나오는것.
    public void dfs(int v, int n, int[][] computers, boolean[] check) {
        check[v] = true;

        for (int i=0; i<n; i++) {
            if (computers[v][i] == 1 && !check[i]) {
                // dfs에 i를 주는건 v정점과 연결된 정점에서 시작하려는 이유 때문
                dfs(i, n, computers, check);
            }
        }
    }
}
저작자표시 (새창열림)

'📚 Data Architect > Programmers' 카테고리의 다른 글

고득점 Kit - 완전탐색 (모의고사)  (0) 2023.04.12
고득점 Kit - 완전탐색 (최소 직사각형)  (0) 2023.04.12
고득점 Kit - DFS & BFS (타겟 넘버)  (0) 2023.04.12
고득점 Kit - 정렬 (H-index)  (0) 2023.04.12
고득점 Kit - 정렬 (가장 큰 수)  (0) 2023.04.12
'📚 Data Architect/Programmers' 카테고리의 다른 글
  • 고득점 Kit - 완전탐색 (모의고사)
  • 고득점 Kit - 완전탐색 (최소 직사각형)
  • 고득점 Kit - DFS & BFS (타겟 넘버)
  • 고득점 Kit - 정렬 (H-index)
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      GStreamer #Pipeline
      React #Markdown
      Lock #Thread #Concurrency
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    고득점 Kit - DFS & BFS (네트워크)
    상단으로

    티스토리툴바