Leetcode Python - 200. Number of Islands

Leetcode #200 - Number of Islands

이제 두 번째로 100 문제들을 풀어보겠습니다. 리트코드의 문제 200 ‘Number of Islands’을 파이썬으로 풀어 보도록 하겠습니다.

discuss 참고 포인트는 값이 1일 경우, 상하좌우에 1이 있으면 ‘#’으로 바꾸어줍니다.

전체 코드는 아래와 같습니다.

class Solution:
    def numIslands(self, grid):
        if not grid:
            return 0

        count = 0
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j] == '1':
                    self.dfs(grid, i, j)
                    count += 1
        return count

    def dfs(self, grid, i, j):
        if i<0 or j<0 or i>=len(grid) or j>=len(grid[0]) or grid[i][j] != '1':
            return
        grid[i][j] = '#'
        self.dfs(grid, i+1, j)
        self.dfs(grid, i-1, j)
        self.dfs(grid, i, j+1)
        self.dfs(grid, i, j-1)

시간복잡도는

  • O(mn) : 모든 노드 방문

공간복잡도는

  • O(1) : in place 변경