이 문제는 내가 오늘 데브매칭때 풀려야했을 DFS를 틀려서 혼자 부들부들 하고있던 찰나 알고리즘 오픈 단톡에 보니 실버1 문제라고들 하길래 DFS 실1문제 아무거나 뽑아서 풀었다 진짜 근데 놀라운건 또 희안하게 이건 맞네.. 하긴 IDE있었으면 지금처럼 풀었을거 같긴한데.. IDE언제 벗어날 수 있는거지... 이문제는 DFS로 일부러 푼거지만 BFS 코드가 더 쉬울거같긴하다
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
// 0인 곳에 방문하지 않은 곳의 depth를 구해준다
if (!visited[i][j] && map[i][j] == 0) {
// 바로 방문처리
visited[i][j] = true;
dfs(i, j);
// map[i,j] 까지 카운트 해야 해서 +1 이 된다
arr.add(depth + 1);
// 초기화
depth = 0;
}
}
}
private static void dfs(int x, int y) {
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if (nx >= 0 && ny >= 0 && nx < m && ny < n) {
if (map[nx][ny] == 0 && !visited[nx][ny]) {
visited[nx][ny] = true;
dfs(nx, ny);
depth++;
}
}
}
}