[Leetcode] 200. Number of Islands

Sungwooยท2024๋…„ 11์›” 30์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
20/43
post-thumbnail

๐Ÿ“•๋ฌธ์ œ

[[Leetcode] 200. Number of Islands]

๋ฌธ์ œ ์„ค๋ช…

์œก์ง€(1)์™€ ๋ฐ”๋‹ค(0)๋กœ ์ด๋ฃจ์–ด์ง„ m * n ํ…Œ์ด๋ธ”์—์„œ ์กด์žฌํ•˜๋Š” ์„ฌ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋‹ค.


๐Ÿ“ํ’€์ด

class Solution:
    def numIslands(self, grid: List[List[str]]) -> int:        
        
        def findNext(x, y):
            grid[y][x] = '0'
            if y-1 >= 0 and grid[y-1][x] == '1':
                findNext(x, y-1)
            if len(grid) > y+1 and grid[y+1][x] == '1':
                findNext(x, y+1)
            if x-1 >= 0 and grid[y][x-1] == '1':
                findNext(x-1, y)
            if len(grid[0]) > x+1 and grid[y][x+1] == '1':
                findNext(x+1, y)


        count = 0
        for y in range(len(grid)):
            for x in range(len(grid[0])):
                if grid[y][x] == '1':
                    findNext(x, y)
                    count += 1
        
        return count
  • ํ…Œ์ด๋ธ”์„ ์ˆœํšŒํ•˜๋‹ค '1'์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•œ๋‹ค.
  • ์ค‘๋ณต ํƒ์ƒ‰์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ์นธ์„ '0'์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
  • ์ƒํ•˜์ขŒ์šฐ๋กœ ํƒ์ƒ‰ํ•ด ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ณ  '1'์ธ๊ฒฝ์šฐ ํ•จ์ˆ˜๋ฅผ ์žฌ๊ท€ํ˜ธ์ถœํ•œ๋‹ค.
  • ํƒ์ƒ‰์ด ๋๋‚˜๋ฉด count๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€