[java] 프로그래머스 - 네트워크
업데이트:
문제
프로그래머스-네트워크
연결 여부를 담은 배열(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);
}
}
}
}
댓글남기기