728x90
https://programmers.co.kr/learn/courses/30/lessons/43162
코딩테스트 연습 - 네트워크
네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있
programmers.co.kr
- 문제

문제
풀이
- BFS로 연결된 네트워크 개수를 세는 문제이다.
- 방문 여부를 계산할 N길이의 Visit 배열을 선언 후 연결된 네트워크 체크
- bfs 함수를 통해 해당 노드번호와 연결된 모든 노드의 방문 상태를 TRUE로 바꾸어 준다.
- bfs 함수
- 연결된 노드들의 담기위한 Queue를 선언한다.
- 시작 노드의 방문 상태를 TRUE로 바꾼 뒤, Queue에 시작 노드를 넣어준다.
- Queue에서 데이터를 꺼내면서, 꺼낸 데이터와 연결된 모든 노드 중 방문하지 않은 노드를 방문처리 후 큐에 넣어준다.
- Queue가 빌 때까지 반복한다.
-
public static boolean[] visit; public static int solution(int n, int[][] computers) { visit = new boolean[n];//방문여부를 표시할 배열 int answer = 0;//네트워크 갯수 for(int i=0;i<n;++i) { if(!visit[i]) {//방문하지 않은 노드일 경우 answer++; bfs(computers,n,i);//연결된 모든 노드 방문처리 } } return answer; } private static void bfs(int[][] computers, int n,int start) { Queue<Integer> que = new LinkedList<>(); visit[start] = true;//시작노드를 방문처리 후, que.offer(start);//큐에 넣어준다 while(!que.isEmpty()) {// 큐에 데이터가 없을 때 까지 int now = que.poll();//큐에서 데이터를 꺼내 for(int i=0;i<n;++i) { if(computers[now][i] == 1 && !visit[i]) { //연결되고, 방문하지 않은 노드를 visit[i] = true;//방문처리 후 que.offer(i);//큐에 넣는다 } } } }
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| LEVEL 3 : 다단계 칫솔 판매 (0) | 2021.11.26 |
|---|---|
| LEVEL 3 : 순위 (0) | 2021.11.26 |
| LEVEL 3 : 정수 삼각형 (0) | 2021.11.26 |
| LEVEL 3 : 리틀 프렌즈 사천성 (0) | 2021.11.25 |
| LEVEL 3 : 디스크컨트롤러 (0) | 2021.11.25 |