Solution
from typing import List
class Solution:
# 섬 -> '0'(water)로 둘러싸여 있어야 함, 보이지 않는 바깥은 전부 '0'이라고 가정
# "대각선은 고려할 필요가 없음"
def numIslands(self, grid: List[List[str]]) -> int:
WATER = '0'
LAND = '1'
# answer: 섬의 개수
answer = 0
# 기본 x, y
len_x = len(grid[0])
len_y = len(grid)
def dfs(x: int, y: int) -> None:
if x < 0 or x >= len_x \
or y < 0 or y >= len_y \
or grid[y][x] == WATER:
return
# visited 사용할 수 있지만 공간복잡도를 위해 이 문제에서는 '0'으로 저장
grid[y][x] = WATER
dfs(x + 1, y)
dfs(x - 1, y)
dfs(x, y + 1)
dfs(x, y - 1)
for y in range(len_y):
for x in range(len_x):
if grid[y][x] == LAND:
dfs(x, y)
answer += 1
return answer
Leave a comment