programmers.co.kr/learn/courses/30/lessons/43162
방문처리가 되지않은 노드를 선택하고 answer을 +1하고 그와 연결된 모든 노드를 방문처리한다.
위를 반복해서 네트워크의 수를 구함
import java.util.LinkedList;
import java.util.Queue;
// 프로그래머스 네트워크 문제
class Network {
static int answer = 0;
public int solution(int n, int[][] computers) {
boolean[] visited = new boolean[n];
for(int i =0; i < n; i++) {
if(!visited[i]) {
bfs(computers, visited, i);
answer++;
}
}
return answer;
}
static void bfs(int[][] computers, boolean[] visited, int start) {
Queue<Integer> q = new LinkedList<>();
q.offer(start);
visited[start] = true;
while (!q.isEmpty()) {
int now = q.poll();
for(int i = 0; i < computers.length; i++) {
if(computers[now][i] == 1 && !visited[i]) {
visited[i] = true;
q.offer(i);
}
}
}
}
}
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 가장 먼 노드 문제 (자바) (0) | 2021.03.16 |
---|---|
프로그래머스 - 입국 심사 문제 (자바) (0) | 2021.03.16 |
프로그래머스 - 단어 변환 문제 (자바) (0) | 2021.03.16 |
프로그래머스 - 여행 경로 문제 (자바) (0) | 2021.03.16 |
프로그래머스 - 타겟넘버 문제 (자바) (0) | 2021.03.15 |