백준 2583 영역 구하기 JAVA

sundays·2023년 3월 25일
0

문제

영역 구하기

풀이

이 문제는 내가 오늘 데브매칭때 풀려야했을 DFS를 틀려서 혼자 부들부들 하고있던 찰나 알고리즘 오픈 단톡에 보니 실버1 문제라고들 하길래 DFS 실1문제 아무거나 뽑아서 풀었다 진짜 근데 놀라운건 또 희안하게 이건 맞네.. 하긴 IDE있었으면 지금처럼 풀었을거 같긴한데.. IDE언제 벗어날 수 있는거지... 이문제는 DFS로 일부러 푼거지만 BFS 코드가 더 쉬울거같긴하다

  1. 방문 체크를 해준다
		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;
                }
            }
        }
  1. DFS
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++;
                }
            }
        }
    }

전체 코드

전체 코드

profile
develop life

0개의 댓글