레벨 3에 맞지 않게 간단한 문제였다. 문제를 풀고 나서 다른 분들 코드를 봐도 거의 똑같은 방식이라서 놀랐다.
DFS / BFS 둘 다 가능한데 DFS가 먼저 떠올라서 DFS를 이용해서 풀이했다.
로직
n개의 컴퓨터를 탐색할 visited 배열을 만들고 n번 탐색한다.
최종 코드
class Solution {
public int solution(int n, int[][] computers) {
int answer = 0;
// 방문 배열 초기화
boolean[] visited = new boolean[n];
// n개의 컴퓨터에 대해 탐색
for (int i = 0; i < n; i++) {
// 방문하지 않은 컴퓨터라면 탐색
if(!visited[i]) {
dfs(computers, visited, i);
answer++;
}
}
return answer;
}
static void dfs(int[][] computers, boolean[] visited, int idx) {
// 현재 노드 방문처리
visited[idx] = true;
for (int i = 0; i < visited.length; i++) {
// 자기 자신이 아니고 방문한적이 없고 값이 1이라면 재귀 호출
if(idx != i && !visited[i] && computers[idx][i] == 1) {
dfs(computers, visited, i);
}
}
}
}
'코딩 테스트' 카테고리의 다른 글
(Java) 프로그래머스 - 혼자 놀기의 달인 (0) | 2022.10.07 |
---|---|
(Java) 프로그래머스 - 할인 행사 (0) | 2022.10.07 |
(Java) 프로그래머스 - 야근 지수 (0) | 2022.10.05 |
(Java) 프로그래머스 - 최고의 집합 (0) | 2022.10.04 |
(Java) 프로그래머스 - 이중우선순위큐 (0) | 2022.09.30 |