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.
m x n 2D 이진 grid
가 '1'(육지) 및 '0'(물) 지도를 나타낼 때, 섬 수를 반환합니다.
섬은 물로 둘러싸여 있고 인접한 육지를 수평 또는 수직으로 연결하여 형성됩니다. grid
의 네 모서리가 모두 물로 둘러싸여 있다고 가정할 수 있습니다.
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
m == grid.length
n == grid[i].length
1 <= m, n <= 300
grid[i][j]
is '0'
or '1'
.const numIslands = (grid) => {
const m = grid.length
const n = grid[0].length
let res = 0;
const dfs = (x, y) => {
if (x < 0 || x > m - 1 || y < 0 || y > n - 1) return
if (grid[x][y] === '1') {
grid[x][y] = 'visited';
dfs(x - 1, y);
dfs(x, y - 1);
dfs(x + 1, y);
dfs(x, y + 1);
return true;
}
return false
}
[...Array(m).keys()].forEach(i => {
[...Array(n).keys()].forEach(j => {
if (dfs(i, j) === true) res += 1
})
})
return res;
};
'1'
이면 방문처리(visited
)를 하고 해당 노드의 상, 하, 좌, 우를 방문한다.