프로그래머스 DFS/BFS 네트워크

jaegeunsong97·2023년 2월 26일
0
post-thumbnail


해설을 봐도 이해가 되지 않는 문제였다. 다들 코드 해설을 적을 때 간단하게만 적어서 그런가보다.

일단 이중 배열이기 때문에 각 배열을 모두 순회하면서 방문하지 않았으면 방문을 하는 코드이다.

단지 재귀함수를 사용해서 생각을 해봐야했을 뿐인 것 같다.

나의 기준에서 이해가 되지않는 부분은 주석을 해놓았다.

class Solution {
	// 3  [[1, 1, 0], [1, 1, 0], [0, 0, 1]]
    int answer = 0;
    boolean[] visited = new boolean[n]; // {false, false, false}
    
    for (int i = 0; i < n; i++) {
    	if (!visited[i]) { // 방문하지 않았으면
        	dfs(computers, visited, i); 
            answer++;
        }
    }
    return answer;
    
    public void dfs(int[][] computers, boolean[] visited, int start) {
    	visited[start] = true; // 방문했다는 표시
        
        // 배열안의 배열을 탐색 하는 코드
        // [start][이 부분을 탐색]
        // 방문하지 않았으면 방문 표시하기
        for (int i = 0; i < computers.length; i++) {
      		if (computers[start][i] == 1 && !visited[i]) {
        		dfs(computers, visited, i);
        	}
      	}
    }
}
profile
현재 블로그 : https://jasonsong97.tistory.com/

0개의 댓글