-
[백준 2606] 바이러스코딩테스트 문제풀이 2021. 9. 19. 21:24
문제
풀이
import java.util.ArrayList; import java.util.List; import java.util.Scanner; class Main { /** * @param args */ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int point = scan.nextInt(); int line = scan.nextInt(); int[][] arr = new int[point+1][point+1]; // 그래프 생성 for (int i = 0; i < line; i++) { int a = scan.nextInt(); int b = scan.nextInt(); arr[a][b] = 1; arr[b][a] = 1; } List<Integer> visitedList = new ArrayList<Integer>(); visit(1, arr, visitedList); // for (int i = 0; i < visitedList.size(); i++) { // System.out.println(visitedList.get(i)); // } System.out.print(visitedList.size() - 1); } public static void visit(int start, int[][] arr, List<Integer> visitedList) { visitedList.add(start); for (int i = 1; i < arr.length; i++) { if (!visitedList.contains(i) && arr[start][i] == 1) { visit(i, arr, visitedList); } } } }
- DFS, BFS 기초문제
- DFS를 이용하여 인접되어있는 모든 노드를 visitedList 에 추가한다.
- 탐색을 마친 후, list에 들어가있는(기준 노드와 연결되어있는 모든 노드 리스트)의 사이즈를 리턴한다.
- 이때, 기준(1) 은 제외한 나머지 노드의 수만 리턴해야 하므로 -1한다.
'코딩테스트 문제풀이' 카테고리의 다른 글
[백준 2231] 분해합 (0) 2021.09.22 [백준 11407] 동전 0 (0) 2021.09.22 [백준 1260] DFS와 BFS (0) 2021.09.19 [프로그래머스] 구명보트 - Greedy (0) 2021.09.13 [프로그래머스] 올바른 괄호 (0) 2021.09.10