사용 알고리즘: bfs
사용 언어: java
import java.util.*;
import java.io.*;
class Solution {
static boolean[] visited ;
public int solution(int n, int[][] computers) {
int answer = 0;
visited = new boolean[n];
for(int i=0; i<n; i++){
if(!visited[i]){
answer++;
visited[i] = true;
bfs(i, n, computers);
}
}
return answer;
}
private static void bfs(int start, int n, int[][] computers){
Queue<Integer> q = new ArrayDeque<>();
q.offer(start);
while(!q.isEmpty()) {
int v = q.poll();
for(int i=0; i<n; i++){
if(computers[v][i] == 1 && !visited[i]){
visited[i] = true;
q.offer(i);
}
}
}
}
}
알고리즘 선택 이유:
같은 구역끼리 묶어서, 묶음 수가 몇 개인지 확인하는 문제
ps. 현재 내 수준 - 지금 이 정도 수준의 bfs는 그냥 풀 수 있게 됨