[LeetCode] Number of Islands

yoonene·2023년 1월 31일
0

알고리즘

목록 보기
40/62

첫 번째 제출

class Solution:
    def numIslands(self, grid: List[List[str]]) -> int:
        # 예외 - 최소
        if not grid:
            return 0
        
        def dfs(r,c):
            grid[r][c] = "0"
            for i in range(4):
                nr, nc = r + dr[i], c + dc[i]
                if 0 <= nr < len(grid) and 0 <= nc < len(grid[0]):
                    if grid[nr][nc] == "1":
                        dfs(nr,nc)
        
        dr, dc = [-1,1,0,0], [0,0,-1,1]
        result = 0
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j] == "1":
                    dfs(i, j)
                    result += 1

        return result

+)

  • 원래 처음에는 한 번 다녀온 곳을 1->0으로 바꾸지 않고 visited 리스트를 따로 사용했다. 그랬더니 time exceed error가 떴다.
    굳이 visited를 안 쓰고도 0으로 바꾸면 공간복잡도를 아낄 수 있었다
profile
NLP Researcher / Information Retrieval / Search

0개의 댓글