문제 풀이/[JAVA_자바] 백준

[JAVA / 자바] 백준 2606번 - 바이러스

Seunghyun_KO 2022. 2. 8. 09:00
728x90
반응형

 문제 

신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다.

예를 들어 7대의 컴퓨터가 <그림 1>과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다.

어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력하는 프로그램을 작성하시오.


 입력 

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


 출력 

1번 컴퓨터가 웜 바이러스에 걸렸을 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 첫째 줄에 출력한다.


 


 문제 접근 방법 

바이러스는 네트워크를 타고 감염이 된다. 그 말은, 바이러스에 걸린 컴퓨터와 연결되어 있는가 없는가를 구분하는 문제이다. (= 1번 컴퓨터에 간선을 통해 갈 수 있는가 = 연결되어 있는가?)

따라서 이번 문제는 깊이 우선 탐색(Depth First Search, DFS), ②너비 우선 탐색(Breath First Search, BFS)중 하나를 선택해 아무거나 사용하여 바이러스에 걸린 컴퓨터와 네트워크로 연결된 컴퓨터를 찾으면 끝난다.

 

문제를 풀 수 있는 방법이 두 가지 이므로 두 가지로 문제를 풀이해보겠다.

1. DFS

    1-1. 재귀

    1-2. 스택 + 반복문

2. BFS


 JAVA 코드 풀이 

1. DFS

  - 1. 재귀

  - 2. 스택 + 반복문

2. BFS

 코드 실행 결과 

1-1. DFS(재귀) 코드 실행 결과
1-2. DFS(Stack + 반복문) 코드 실행 결과
2. BFS 코드 실행 결과


 후기 

DFS와 BFS를 연습해볼 수 있는 문제라고 생각한다.

 

유사한 문제 : 백준 1260 - DFS와 BFS

 

1260번: DFS와 BFS

첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사

www.acmicpc.net


 문제 원본 

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

 

2606번: 바이러스

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

www.acmicpc.net

 알고리즘 분류 

728x90
반응형