Published:
Updated:

  • Reference
  • visited ์“ฐ๊ณ  ํ’€ ์ˆ˜๋„ ์žˆ๋Š” ๋ฌธ์ œ


SolutionPermalink

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