https://leetcode.com/problems/number-of-islands/description/
Number of Islands - LeetCode
Can you solve this real interview question? Number of Islands - Given an m x n 2D binary grid grid which represents a map of '1's (land) and '0's (water), return the number of islands. An island is surrounded by water and is formed by connecting adjacent l
leetcode.com
간단한 그래프 탐색 문제다.
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
newgrid = [x[:] for x in grid]
answer = 0
dx = [0, 0, 1, -1]
dy = [1, -1, 0, 0]
def dfs(i, j):
if i >= 0 and j >= 0 and i < len(newgrid) and j < len(newgrid[0]):
if newgrid[i][j] == '1':
newgrid[i][j] = '0'
dfs(i + 1, j)
dfs(i - 1, j)
dfs(i, j + 1)
dfs(i, j - 1)
for i in range(len(newgrid)):
for j in range(len(newgrid[0])):
if newgrid[i][j] == '1':
answer += 1
dfs(i, j)
return answer
다른사람의 솔루션을 봤는데 숏코딩이 기가맥히다.
def numIslands(self, grid):
def sink(i, j):
if 0 <= i < len(grid) and 0 <= j < len(grid[i]) and grid[i][j] == '1':
grid[i][j] = '0'
map(sink, (i+1, i-1, i, i), (j, j, j+1, j-1))
return 1
return 0
return sum(sink(i, j) for i in range(len(grid)) for j in range(len(grid[i])))
'코딩 테스트 및 알고리즘 > leetcode for google' 카테고리의 다른 글
leetcode easy : Happy Number (0) | 2023.03.05 |
---|---|
leetcode medium : Rotting Oranges (0) | 2023.03.02 |
leetcode medium : Course Schedule (Grind 75 Graph문제 4) (0) | 2023.02.25 |
leetcode medium : Clone Graph (Grind 75 Graph 문제 3) (0) | 2023.02.24 |
leetcode medium : 01 Matrix (Grind 75 Graph 문제 2) (0) | 2023.02.23 |