[백준/Java] 11724 - 연결 요소의 개수

2025. 9. 8. 09:38·코딩테스트/백준

https://www.acmicpc.net/problem/11724

문제


풀이

bfs로 해결하는 대표 문제인 것 같다

정점을 입력받아서 서로 연결해주고

방문하지 않은 노드일 때만 bfs를 호출하면

bfs를 호출한 횟수가 연결 요소의 개수가 된다

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

public class Main {

    static int N;
    static int[][] arr;
    static boolean[] visited;
    static Queue<Integer> queue;
    static int count;

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        StringBuilder sb = new StringBuilder();

        st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        arr = new int[N + 1][N + 1];
        visited = new boolean[N + 1];

        // 정점을 받아서 서로 연결해준다
        for (int i = 0; i < M; i++) {
            st = new StringTokenizer(br.readLine());
            int u = Integer.parseInt(st.nextToken());
            int v = Integer.parseInt(st.nextToken());
            arr[u][v] = arr[v][u] = 1;
        }

        // 방문하지 않은 노드일 때만 bfs를 호출한다
        for (int i = 1; i <= N; i++) {
            if (!visited[i]) {
                bfs(i);
            }
        }
        System.out.println(count);
        br.close();
    }

    static void bfs(int node) {
        queue = new LinkedList<>();
        // 방문 처리
        visited[node] = true;
        queue.offer(node);

        while (!queue.isEmpty()) {
            // 큐에서 값을 꺼내서 그 값과 연결된 노드들을 큐에 넣고 방문 처리
            // 큐가 빌 때까지 반복한다
            int idx = queue.poll();
            for (int i = 1; i <= N; i++) {
                if (!visited[i] && arr[idx][i] == 1) {
                    queue.offer(i);
                    visited[i] = true;
                }
            }
        }
        // bfs가 호출된 횟수 = 연결 요소의 개수
        count++;
    }
}

결과

'코딩테스트/백준' 카테고리의 다른 글
  • [백준/Java] 21736 - 헌내기는 친구가 필요해
  • [백준/Java] 18111 - 마인크래프트
  • [백준/Java] 11279 - 최대 힙
  • [백준/Java] 2805 - 나무 자르기
KDH.dev
KDH.dev
  • KDH.dev
    CodingHard
    KDH.dev
  • 전체
    오늘
    어제
    • 전체글 (82)
      • 코딩테스트 (74)
        • 프로그래머스 (13)
        • 백준 (61)
      • CS (4)
        • 네트워크 (4)
      • Spring (1)
      • Java (3)
        • 자료구조 (3)
        • 알고리즘 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    백준
    14940
    13913
    멀티캠퍼스it부트캠프
    30804
    16935
    21736
    18111
    [LG유플러스] 유레카 백엔드 개발자
    프로그래머스 Lv.0
    자료구조
    자바
    네트워크
    17626
    CS
    5525
    11660
    부트캠프후기
    코딩테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
KDH.dev
[백준/Java] 11724 - 연결 요소의 개수
상단으로

티스토리툴바