Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Archives
Today
Total
관리 메뉴

JAVA Developer Training

40. 2606번 바이러스 본문

백준 알고리즘

40. 2606번 바이러스

Romenest 2021. 11. 4. 10:24

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

 

2606번: 바이러스

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

www.acmicpc.net

 

바로전에 포스팅한 문제와 동일한 그래프 문제

DFS를 이용해 해결했다

 

고려해야할 점은

1. 서로 선으로 연결되어 있다는점

2. 때문에 1~2와 2~1은 같다고 처리해주어야한다는 것

 

1. 입력부분

public static void main(String[] args) throws IOException,NumberFormatException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	
		n = Integer.parseInt(br.readLine());
		m = Integer.parseInt(br.readLine());
		
		map = new int[n+1][n+1]; //탐색 경로 저장
		visited = new boolean[n+1]; //탐색확인
		
		for(int i=0; i<m; i++){
			StringTokenizer st = new StringTokenizer(br.readLine());
			int a = Integer.parseInt(st.nextToken());
			int b = Integer.parseInt(st.nextToken());
			map[a][b] = map[b][a] = 1;
			//둘은 같은 경우의수
		}

		dfs(1);
        //1부터 탐색 시작

		System.out.println(cnt);
		
	}

 

2. 탐색 부분

public static void dfs(int x) {	
		visited[x] = true;

		for(int y=0; y<=n; y++){ //y<n 이 아니다 y<=n 이다
			if(map[x][y]==1 && !visited[y]) {
				cnt++;
				dfs(y);
			}
		}		
	}

 

결과

'백준 알고리즘' 카테고리의 다른 글

42. 10870번 피보나치 수 5  (0) 2021.12.17
41. 12851번 숨바꼭질2  (0) 2021.11.04
39. 1743번 음식물 피하기  (0) 2021.11.04
38. 2667번 단지번호붙이기  (0) 2021.11.04
34. 2504번 괄호의 값  (0) 2021.10.26