서하아빠의 개발 블로그

200. Number of Islands 본문

알고리즘/LeetCode

200. Number of Islands

서하아빠 2021. 6. 14. 19:49

Given an m x n 2D binary grid grid which represents a map of '1's (land) and '0's (water), return the number of islands.

An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.

 

Example 1:

 

Input: grid = [
  ["1","1","1","1","0"],
  ["1","1","0","1","0"],
  ["1","1","0","0","0"],
  ["0","0","0","0","0"]
]
Output: 1

Example 2:

 

Input: grid = [
  ["1","1","0","0","0"],
  ["1","1","0","0","0"],
  ["0","0","1","0","0"],
  ["0","0","0","1","1"]
]
Output: 3

Constraints:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 300
  • grid[i][j] is '0' or '1'.

 

 

[Java Source]

class Solution {
    public int numIslands(char[][] grid) {
        
        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 += 1;
                    BFS( i, j, grid);
                }
            }
        }
        
        return count;
    }
    
    public void BFS( int i, int j, char[][] grid) {
        if( i < 0 || i >= grid.length || j < 0 || j >= grid[i].length || grid[i][j] == '0') {
            return;
        }
        
        grid[i][j] = '0';

        // 1.left
        BFS(i, j-1, grid);
        // 2.right
        BFS(i, j+1, grid);
        // 3.up
        BFS(i-1, j, grid);
        // 4.down
        BFS(i+1, j, grid);
        
    }
}

'알고리즘 > LeetCode' 카테고리의 다른 글

217. Contains Duplicate  (0) 2022.05.20
25. Reverse Nodes in k-Group  (0) 2022.05.20
61. Rotate List  (0) 2022.05.19
693. Binary Number with Alternating Bits  (0) 2021.04.20
283. Move Zeroes  (0) 2021.04.07