[참고] Number Of Island - DFS

APRIL 01, 2021

#. 테스트 문제


#. 결과 및 풀이

1. 풀이

@Test
void NumberOfIsland_DFS() {
    char[][] grid = {{'1', '1', '1', '0', '1'}, {'1', '1', '0', '0', '0'}, {'1', '1', '0', '0', '1'}, {'0', '0', '0', '0', '1'}};
    Assertions.assertEquals(3, NumberOfIsland_DFS_Solution(grid));
}

private int NumberOfIsland_DFS_Solution(char[][] grid) {

    if(grid == null || grid.length == 0 || grid[0].length == 0) return 0;
    
    int count = 0;
    for(int i=0; i<grid.length; i++) {
        for(int j=0; j<grid[i].length; j++) {
            if(grid[i][j] == '1') {
                count++;
                NumberOfIsland_DFS(grid, i, j);
            }
        }
    }
    return count;
}

private void NumberOfIsland_DFS(char[][] grid, int i, int j) {
    int m = grid.length;
    int n = grid[0].length;
    
    if(i < 0 || i >= m || j < 0 || j >= n || grid[i][j] != '1')
        return;
    
    grid[i][j] = 'x';
    
    NumberOfIsland_DFS(grid, i-1, j);
    NumberOfIsland_DFS(grid, i+1, j);
    NumberOfIsland_DFS(grid, i, j-1);
    NumberOfIsland_DFS(grid, i, j+1);
}

배웠다


작업 기록 블로그