문제 출처: https://programmers.co.kr/learn/courses/30/lessons/49189
문제
제한사항
import java.util.*;
class Solution {
public int solution(int n, int[][] edge) {
int answer = 0;
List<List<Integer>> adjacencyList = new ArrayList<>();
for (int i = 0; i < n + 1; i++) {
adjacencyList.add(new ArrayList<>());
}
for (int i = 0; i < edge.length; i++) {
adjacencyList.get(edge[i][0]).add(edge[i][1]);
adjacencyList.get(edge[i][1]).add(edge[i][0]);
}
Queue<Integer> queue = new ArrayDeque<>();
boolean[] flag = new boolean[n + 1];
queue.offer(1);
int count = 0;
while (!queue.isEmpty()) {
int size = queue.size();
count = 0;
while (size-- > 0) {
int target = queue.poll();
flag[target] = true;
count++;
// 열만 보면 됨
List<Integer> tempList = adjacencyList.get(target);
for (int num : tempList) {
if (!flag[num]) {
queue.offer(num);
flag[num] = true;
}
}
}
}
answer = count;
return answer;
}
}