일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- C++
- Computer Science
- regression
- SECS
- linux
- python
- 회귀
- Gem
- 프로그래머스
- 백준
- spring boot
- 회원가입
- SECS/GEM
- Spring JPA
- 스포티파이
- java
- spotify
- c
- 자바
- Baekjoon
- modern c++
- Spotify Api
- SW Expert Academy
- MYSQL
- SECS-II
- 파이썬
- programmers
- SWEA
- Spring
- CS
- Today
- Total
비버놀로지
[BAEKJOON 백준] 2606 바이러스 본문
문제
신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다.
예를 들어 7대의 컴퓨터가 <그림 1>과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다.
어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어진다. 이어서 그 수만큼 한 줄에 한 쌍씩 네트워크 상에서 직접 연결되어 있는 컴퓨터의 번호 쌍이 주어진다.
출력
1번 컴퓨터가 웜 바이러스에 걸렸을 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 첫째 줄에 출력한다.
일단 입력을 배열로 받아 1을 넣어준다. 그렇게 받은 값의 반대편도 1로 넣어준다. 그 중 1번과 연결되어있는 모든 컴퓨터의 수를 세야한다. 그렇게 찾은 수는 visit를 true를 해줘서 중복으로 찾지 않게 한다.
그렇게 연결된 컴퓨터 수를 출력해 준다.
import java.util.LinkedList;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
int M=sc.nextInt();
int arr[][]=new int[N+1][N+1];
boolean visit[]=new boolean[N+1];
for(int i=0;i<M;i++) {
int f=sc.nextInt();
int t=sc.nextInt();
arr[f][t]=arr[t][f]=1;
}
LinkedList <Integer> que=new LinkedList<>();
que.offer(1);
visit[1]=true;
int count=-1;
while(!que.isEmpty()) {
int q=que.poll();
for(int i=1;i<=N;i++) {
if(arr[q][i]==1&&!visit[i]) {
que.offer(i);
visit[i]=true;
}
}
count++;
}
System.out.println(count);
}
}
'ALGORITM > JAVA' 카테고리의 다른 글
[BAEKJOON 백준] 2636 치즈 (0) | 2021.01.31 |
---|---|
[BAEKJOON 백준] 2635 수 이어가기 (0) | 2021.01.31 |
[BAEKJOON 백준] 2605 줄 세우기 (0) | 2021.01.24 |
[BAEKJOON 백준] 2578 빙고 (0) | 2021.01.24 |
[BAEKJOON 백준] 2564 경비원 (0) | 2021.01.24 |