[java] 프로그래머스 - 네트워크

최대 1 분 소요

업데이트:

문제

프로그래머스-네트워크
연결 여부를 담은 배열(computers)를 가지고 연결된 네트워크가 몇개인지 리턴하는 문제.

풀이

0번부터 n-1까지 있으므로 0부터 돌면서 방문하지 않은 인덱스를 dfs로 탐색한다. 만약 탐색중에 방문하게되었다면 visit에도 기록이 있을테니까(배열 얕은복사) visit에 체크되지않은 것들만 돌면서 네트워크 개수를 1씩 더해주면 된다.

소스코드

class Solution {
	public int solution(int n, int[][] computers) {
		int answer = 0;
		boolean[] visit = new boolean[n];
		for (int i = 0; i < visit.length; i++) {
			if (!visit[i]) {
				dfs(visit, computers, i);
				answer++;
			}
		}
		return answer;
	}

	private void dfs(boolean[] visit, int[][] computers, int i) {
		// TODO Auto-generated method stub
		visit[i]=true;
		for (int j = 0; j < visit.length; j++) {
			if(i==j)
				continue;
			if(!visit[j] && computers[i][j]==1) {
				dfs(visit,computers,j);
			}
		}

	}
}

댓글남기기