https://school.programmers.co.kr/learn/courses/30/lessons/43162
풀이 - 나의 생각
방문을 하면서
시작점을 기록합니다.
ex. A에서 시작해서 도착한 곳은 다 A로 저장
그 후에 Set으로 저장된 시작점의 개수를
중복없이 세면
네트워크의 개수가 나옵니다.
코드
import java.util.*;
class Solution {
public int solution(int n, int[][] computers) {
int answer = 0;
int[] network = new int[n];
Queue<Integer> q = new ArrayDeque<>();
Set<Integer> set = new HashSet<>();
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(computers[i][j] == 0) continue;
if(network[j] > 0) continue;
q.offer(j);
}
while(!q.isEmpty()){
int computer = q.poll();
network[computer] = i+1;
for(int j = 0; j < n; j++){
if(computers[computer][j] == 0) continue;
if(network[j] > 0) continue;
q.offer(j);
}
}
}
for(int k : network){
set.add(k);
}
return set.size();
}
}
728x90
'프로그래머스 > Lv.3' 카테고리의 다른 글
여행경로 - Python, dfs, stack (0) | 2024.11.18 |
---|---|
야근 지수 - Python, heap (0) | 2024.11.17 |
베스트앨범 - Python, defaultdict, sort, sorted (2) | 2024.11.06 |
합승 택시 요금 - JAVA, 다익스트라 알고리즘(Dijkstra Algorithm) (0) | 2024.05.25 |
코딩테스트 연습 > 이중우선순위큐 - JAVA (0) | 2024.01.05 |