본문 바로가기
🧑‍💻코딩 테스트/백준 (BOJ)

[코딩테스트/백준 알고리즘] 2606번 - 바이러스 (Java, 자바 풀이)

by 코코의 주인 2022. 12. 15.

문제

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

 

2606번: 바이러스

첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어

www.acmicpc.net


문제 설명


문제 풀이

 BFS를 활용한 그래프 탐색으로 해결했다.


코드

import java.util.*;

class Main {
    static Queue<Integer> q = new LinkedList<>();
    static List<ArrayList<Integer>> gphList = new ArrayList<>();
    static boolean[] visit = new boolean[101];
    static int count = 0;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int T = sc.nextInt();
        
        while(N-- >= 0) {
            gphList.add(new ArrayList<Integer>());
        }

	//입력
        while(T-- > 0) {
            int S = sc.nextInt();
            int E = sc.nextInt();
            gphList.get(S).add(E);
            gphList.get(E).add(S);
        }
        
        //탐색
        q.offer(1);
        while(!q.isEmpty()) {
            BFS(q.poll());
        }
        
        //출력
        System.out.println(count);
    }
    
    //BFS
    static void BFS(int i) {
        if(!visit[i]) {
            visit[i] = true;
            for(int j : gphList.get(i)) {
                if(!visit[j]) {
                    q.offer(j);
                    count++;
                    BFS(q.poll());
                }
            }
        }
    }
}

댓글