요르딩딩

백준 : 바이러스 2606 (DFS) 본문

[코딩테스트]/문제풀이

백준 : 바이러스 2606 (DFS)

요르딩딩 2022. 3. 22. 13:10
728x90
반응형

가장 기본적인 DFS 문제인것 같습니다.

 

카운트, 무방향 간선, 인덱스 확인 이렇게 3가지 정도면 잘 확인하면 풀 수 있는 문제입니다.

 

import java.util.*;

public class Main {
	
	static int n,m;
	static boolean[] visited; //노드 수 만큼생성
	static ArrayList<ArrayList<Integer>> graph = new ArrayList<ArrayList<Integer>>();
	static int result = 0;
	
	public static void dfs(int now) { // DFS(재귀)
		visited[now] = true; //방문표시
		
		for(int i =0; i< graph.get(now).size(); i++) {
			int tmp = graph.get(now).get(i);
			
			if(visited[tmp] == false) { //방문전이라면
				result ++; //카운트 증가
				dfs(tmp); //재귀
			}
		}
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		n = sc.nextInt();
		m = sc.nextInt();
		sc.nextLine(); //버퍼
		
		visited = new boolean[n+1]; //인덱스 1부터 시작(0부터 시작인지 1부터 시작인지 주의)***
		
		//그래프 초기화
		for(int i=0; i<n+1; i++) { //그래프 생성
			graph.add(new ArrayList<Integer>());
		}
		
		for(int i=0; i<m; i++) { //그래프 생성
			String st = sc.nextLine();
			String[] stArr = st.split(" ");
			
			int a = Integer.parseInt(stArr[0]);
			int b = Integer.parseInt(stArr[1]);
			
			graph.get(a).add(b); //무방향간선인지 아닌지 주의***
			graph.get(b).add(a);
		}
		
		dfs(1); //1번컴퓨터
		
		System.out.println(result);
	
	}
}
728x90
반응형

'[코딩테스트] > 문제풀이' 카테고리의 다른 글

백준 : 1325 (효율적인 해킹) (DFS)  (0) 2022.03.23
백준 : 경로 찾기 (DFS)  (0) 2022.03.22
백준 : 1 2 3 더하기 (점화식)  (0) 2022.03.15
백준 : 경사로  (0) 2021.12.01
[코테] 백준 : 14500 테트로미노  (0) 2021.10.04
Comments