알고리즘
[LeetCode] 1254. Number of Closed Islands
유병각
2022. 5. 29. 15:47
class Solution:
def closedIsland(self, grid: List[List[int]]) -> int:
n = len(grid)
m = len(grid[0])
if (n <= 2 or m <= 2):
return 0
def dfs(r,c):
nonlocal res;
if (r < 0 or r >= n or c < 0 or c >= m or grid[r][c] == 1):
return ;
if ((r == 0 or r == n - 1 or c == 0 or c == m - 1) and grid[r][c] == 0):
res = False;
grid[r][c] = 1;
dfs(r+1,c)
dfs(r-1,c)
dfs(r,c+1)
dfs(r,c-1)
cnt = 0;
for i in range(n):
for k in range(m):
if (grid[i][k] == 0):
res = True;
dfs(i,k);
if (res):
cnt += 1;
return cnt