[백준/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
  • 전체
    오늘
    어제
    • 분류 전체보기 (73)
      • 블로그 꾸미기 (0)
      • Spring (6)
      • React (3)
      • CS (0)
      • 알고리즘 (57)
        • 개념 (2)
        • 문제풀이 (54)
      • Java (1)
      • DB (1)
      • log (4)
        • SSAFY (3)
        • 궁금 (1)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 공지사항

  • 인기 글

  • 태그

    dp
    프로그래머스
    dfs
    싸피
    알고리즘
    최장증가부분수열
    리액트
    비트마스킹
    Java
    SSAFY
    SSAFY 9기
    백준
    불 끄기
    lv3
    Springsecurity
    알고리즘 문제풀이
    springboot
    Security
    pccp모의고사
    BFS
    JWT
    BOJ
    너비우선탐색
    LIS
    LV2
    그리디
    골드1
    ssafy 합격 후기
    Spring
    도대체왜
  • 최근 댓글

  • 최근 글

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

티스토리툴바