[백준 문제풀이] 2606번: 바이러스

RyeonD·2022년 6월 13일
0

알고리즘 문제풀이

목록 보기
10/11

백준 2606번 바이러스 문제 바로가기

bfs 문제이고, stack으로 풀 수 있다. bfs와 dfs 문제는 코드 자체의 큰 틀은 잘 만들지만, 세부적인 조건을 주는 것을 잘 못하는 것 같다. if-else문을 적절하게 사용하여 조건 주는 연습이 많이 필요 할 것 같다.

// 문제 review
public class P2606_r {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			
		int n = Integer.parseInt(br.readLine());
		int m = Integer.parseInt(br.readLine());
		
		boolean path[][] = new boolean[n+1][n+1];
		boolean visited[] = new boolean[n+1];
		
		for(int i=0; i<m; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			
			int com1 = Integer.parseInt(st.nextToken());
			int com2 = Integer.parseInt(st.nextToken());
			
			path[com1][com2] = path[com2][com1] = true;
		}
	
		Stack <Integer> stack = new Stack<>();
		stack.add(1);
		
		int cnt = 0;
		while(!stack.isEmpty()) {
			int curr = stack.pop();		
			
			for(int i=2; i<=n; i++) {
				if(path[curr][i] && !visited[i]) {
					stack.push(i);
					visited[i] = true;
					cnt++;
				}
			}
		}
		
		System.out.println(cnt);
	}

}
profile
I'm job hunting. I want to be a sw developer.

0개의 댓글