[백준/BOJ] 2606 바이러스 - JAVA - 실버3

2025. 4. 16. 19:16·알고리즘/문제풀이

[백준/BOJ] 2606 바이러스 - JAVA - 실버3

문제

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

문제 분석

조건

  • 네트워크로 연결된 컴퓨터들 사이에서 1번 컴퓨터와 연결된 컴퓨터의 수를 구하는 문제이다.

풀이방법

  • 많은 문제를 BFS를 활용하며 해결하므로 DFS를 통해 문제 해결을 해보았다.
  • DFS를 구현하여 문제를 해결할 수 있는데 1번 노드를 제외한 연결된 노드의 수를 출력하므로 마지막에 `-1`를 해주었다.

코드

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

public class Main {
    static boolean[][] graph;
    static boolean[] visited;
    static int N;

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

        N = Integer.parseInt(br.readLine());
        int M = Integer.parseInt(br.readLine());

        graph = new boolean[N + 1][N + 1];
        visited = new boolean[N + 1];

        for (int i = 0; i < M; i++) {
            st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            graph[a][b] = true;
            graph[b][a] = true;
        }
        visited[1] = true;
        System.out.println(dfs(1) - 1);
    }

    private static int dfs(int now) {
        int count = 0;
        for (int next = 1; next <= N; next++) {
            if (now == next || visited[next]) { // 방문체크
                continue;
            }
            if (graph[now][next]) {
                visited[next] = true;
                count += dfs(next);
            }
        }
        return count + 1;
    }
}

결과

728x90
저작자표시 비영리 변경금지 (새창열림)
'알고리즘/문제풀이' 카테고리의 다른 글
  • [프로그래머스] 255900 외톨이 알파벳 - JAVA - PCCP 모의고사
  • [프로그래머스] 43165 타겟 넘버 - JAVA - Lv.2
  • [프로그래머스] 159993 미로 탈출 - JAVA - Lv.2
  • [프로그래머스] 1844 게임 맵 최단거리 - JAVA - Lv.2
LIRI
LIRI
  • LIRI
    기록
    LIRI
  • 전체
    오늘
    어제
    • 분류 전체보기 (74)
      • 블로그 꾸미기 (0)
      • Spring (6)
      • 바이브코딩 (1)
      • React (3)
      • CS (0)
      • 알고리즘 (57)
        • 개념 (2)
        • 문제풀이 (54)
      • Java (1)
      • DB (1)
      • log (4)
        • SSAFY (3)
        • 궁금 (1)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 공지사항

  • 인기 글

  • 태그

    Springsecurity
    그리디
    최장증가부분수열
    JWT
    dfs
    BFS
    BOJ
    싸피
    Spring
    리액트
    LV2
    너비우선탐색
    dp
    springboot
    SSAFY
    알고리즘
    lv3
    Java
    Security
    비트마스킹
    ssafy 합격 후기
    알고리즘 문제풀이
    SSAFY 9기
    느좋코딩
    프로그래머스
    pccp모의고사
    LIS
    커서ai
    바이브코딩
    백준
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
LIRI
[백준/BOJ] 2606 바이러스 - JAVA - 실버3
상단으로

티스토리툴바