[Programmers] 네트워크 DFS 풀이 (Java)
- 💾 알고리즘/프로그래머스
- 2020. 7. 21.
네트워크
https://programmers.co.kr/learn/courses/30/lessons/43162
풀이
class Solution {
public int solution(int n, int[][] computers) {
int answer = 0;
boolean visited[] = new boolean[n+1];
for(int i=0; i < n; i++){
if( visited[i] == false){
answer += dfs(i, computers, visited);
}
}
return answer;
}
public static int dfs(int x, int[][] computers, boolean[] visited){
if(visited[x]){
return 0;
}
visited[x] = true;
for(int y=0; y < computers[x].length; y++){
if(computers[x][y] == 1 && visited[y] == false){
dfs(y, computers, visited);
}
}
return 1;
}
}
테스트 코드
package org.kyhslam.programmers;
// 깊이/너비우선탐색 : 네트워크 level.3
public class BFS_Network {
public static int p[][] = {
{1,1,0},
{1,1,0},
{0,0,1}
};
public static boolean visited[];
public static int cnt = 0;
public static void main(String[] args) {
solution(3, p);
}
public static void view(int[][] arr){
for(int i=0; i < arr.length; i++){
for(int j=0; j < arr[i].length; j++){
System.out.printf(arr[i][j] + " ");
}
System.out.println();
}
}
public static int solution(int n, int[][] computers){
visited = new boolean[n];
int count = 0;
computers = p;
for(int i=0; i < visited.length; i++){
if(visited[i] == false){
count += dfs(i, computers);
}
}
System.out.println("count == " + count);
return 0;
}
public static int dfs(int x, int[][] computers){
if(visited[x]){
return 0;
}
visited[x] = true;
for(int y=0; y < p[x].length; y++){
if(computers[x][y] == 1 && visited[y] == false){
dfs(y, computers);
}
}
return 1;
}
}
'💾 알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers] : 해시 > 전화번호 목록 > JAVA (0) | 2021.08.05 |
---|---|
[Programmers] : 해시 > 완주하지 못한 선수 (0) | 2021.07.30 |
[Programmers] : 스택/큐 :: 주식가격 (0) | 2021.07.26 |
[Programmers] : 스택/큐 :: 프린터 (0) | 2021.07.23 |
[Programmers] 정렬 : k번째수 (0) | 2021.06.04 |