diff --git a/leetcode/number-of-islands/epicarts.py b/leetcode/number-of-islands/epicarts.py new file mode 100644 index 0000000..e39e350 --- /dev/null +++ b/leetcode/number-of-islands/epicarts.py @@ -0,0 +1,28 @@ +from typing import List + + +class Solution: + def numIslands(self, grid: List[List[str]]) -> int: + count = 0 + + def dfs(i: int, j: int): + if i < 0 or len(grid) <= i or j < 0 or len(grid[0]) <= j or grid[i][j] != '1': + return + grid[i][j] = '#' + + # 4방향으로 탐색 + dfs(i, j + 1) + dfs(i, j - 1) + dfs(i + 1, j) + dfs(i - 1, j) + + for i in range(len(grid)): + for j in range(len(grid[0])): + if grid[i][j] == '1': + dfs(i, j) + count += 1 + return count + + +grid = [["1", "1", "1", "1", "0"], ["1", "1", "0", "1", "0"], ["1", "1", "0", "0", "0"], ["0", "0", "0", "0", "0"]] +print(Solution().numIslands(grid)) diff --git "a/leetcode/number-of-islands/epicarts_\353\254\270\354\240\234\355\222\200\354\235\264.md" "b/leetcode/number-of-islands/epicarts_\353\254\270\354\240\234\355\222\200\354\235\264.md" new file mode 100644 index 0000000..db106f0 --- /dev/null +++ "b/leetcode/number-of-islands/epicarts_\353\254\270\354\240\234\355\222\200\354\235\264.md" @@ -0,0 +1,6 @@ +# 문제 주소 +https://leetcode.com/problems/number-of-islands/submissions/ + +## 문제 접근 방법 +1. 기본적으로 모든 0,0 부터 n,n까지 배열의 반복문을 돈다. +2. 만약 섬일 경우 섬을 dfs로 전체 탐색을 진행한다. 섬을 방문했다는 증거로 1이 아닌 다른 값으로 바꾼다.