Number of Islands
LeetCode 200. Number of Islands
원문
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.
풀이
grid
를 순회하며 '1'
이 나올 때마다 그 지점이 이미 방문한 지점이 아니라면 BFS 또는 DFS로 인접한 다른 '1'
이 있는 지점들을 순회하고 방문처리한다.
인접 지점 방문이 끝나면 섬의 수를 저장하는 변수에 1을 더한다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from collections import deque
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
dr, dc = (0, 0, 1, -1), (1, -1, 0, 0)
n, m = len(grid), len(grid[0])
visited = [[False for i in range(m)] for j in range(n)]
que = deque()
result = 0
for i in range(n):
for j in range(m):
if grid[i][j] == '1' and not visited[i][j]:
visited[i][j] = True
que.append((i, j))
while que:
r, c = que.popleft()
for k in range(4):
nr, nc = r + dr[k], c + dc[k]
if (0 <= nr < n and
0 <= nc < m and
not visited[nr][nc] and
grid[nr][nc] == '1'
):
visited[nr][nc] = True
que.append((nr, nc))
result += 1
return result
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.