알고리즘

[LeetCode] 1020. Number of Enclaves

유병각 2022. 5. 31. 16:58
class Solution:
    def numEnclaves(self, grid: List[List[int]]) -> int:
        n = len(grid)
        m = len(grid[0])
        
        def dfs(r,c):
            if (r < 0 or r >= n or c < 0 or c >= m or grid[r][c] == 0):
                return ;
            
            grid[r][c] = 0;
            
            dfs(r+1,c)
            dfs(r-1,c)
            dfs(r,c+1)
            dfs(r,c-1)
        
        for i in range(n):
            for k in range(m):
                if ((i == 0 or i == n-1 or k == 0 or k == m - 1) and grid[i][k] == 1):
                    dfs(i,k);
        
        cnt = 0;
        for i in range(1, n-1):
            for k in range(1, m-1):
                if (grid[i][k] == 1):
                    cnt += 1;
        return cnt