From b50b1e3919d5dcb5d0a6ef69ff28b44ca5f50ba6 Mon Sep 17 00:00:00 2001 From: bumpsoo Date: Tue, 28 Jan 2025 21:32:50 +0900 Subject: [PATCH] https://leetcode.com/problems/maximum-number-of-fish-in-a-grid --- medium/maximum_number_of_fish_in_a_grid.py | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 medium/maximum_number_of_fish_in_a_grid.py diff --git a/medium/maximum_number_of_fish_in_a_grid.py b/medium/maximum_number_of_fish_in_a_grid.py new file mode 100644 index 0000000..f374cbe --- /dev/null +++ b/medium/maximum_number_of_fish_in_a_grid.py @@ -0,0 +1,31 @@ +# https://leetcode.com/problems/maximum-number-of-fish-in-a-grid + +from typing import List + +DIRS = [(-1, 0), (1, 0), (0, -1), (0, 1)] +class Solution: + def findMaxFish(self, grid: List[List[int]]) -> int: + r_size, c_size = len(grid), len(grid[0]) + visited = [[False] * c_size for _ in range(r_size)] + max_fish = 0 + + def dfs(r, c): + if r < 0 or \ + r >= r_size or \ + c < 0 or \ + c >= c_size or \ + visited[r][c] or grid[r][c] == 0: + return 0 + visited[r][c] = True + fish_count = grid[r][c] + for dr, dc in DIRS: + fish_count += dfs(r + dr, c + dc) + return fish_count + + for r in range(r_size): + for c in range(c_size): + if grid[r][c] > 0 and not visited[r][c]: + max_fish = max(max_fish, dfs(r, c)) + + return max_fish +