https://leetcode.com/problems/number-of-closed-islands/
Number of Closed Islands - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
닫힌 섬의 개수를 찾는 문제
dfs로 해결이 가능하다.
물에 둘러쌓인 고립된 섬의 갯수만 찾는 것인데,
조건에서 모서리에 있는 육지는 섬이 아니라 한다.
모서리 부분에 연결된 육지를 물로 치환해주고
그 다음의 섬의 갯수를 찾으면 된다.
class Solution(object):
def closedIsland(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
def exclude():
for i in range(0, len(grid), 1):
for j in range(0, len(grid[0]),1):
if (i==0 or j==0 or i==len(grid)-1 or j == len(grid[0])-1) and grid[i][j] == 0:
dfs(i,j,1)
def dfs(r, c, val):
if grid[r][c] == 0:
grid[r][c] = val
if r+1 < len(grid) :
dfs(r+1,c,val)
if c-1 >= 0:
dfs(r, c-1, val)
if r-1 >= 0:
dfs(r-1, c, val)
if c+1 < len(grid[0]):
dfs(r, c+1, val)
def printgrid(grid):
for i in grid:
print(i)
exclude()
#printgrid(grid)
closed_island = 0
for i in range(0, len(grid), 1):
for j in range(0, len(grid[0]), 1):
if grid[i][j] == 0:
pass
dfs(i,j, grid)
closed_island+=1
#printgrid(grid)
#print("------------------")
return closed_island
'알고리즘 문제풀기' 카테고리의 다른 글
950. Reveal Cards In Increasing Order (0) | 2020.01.26 |
---|---|
1277. Count Square Submatrices with All Ones (0) | 2020.01.25 |
969. Pancake Sorting (0) | 2019.12.11 |
1202. Smallest String With Swaps (0) | 2019.12.06 |
300. Longest Increasing Subsequence (0) | 2019.12.05 |