diff --git a/number-of-islands/devyejin.py b/number-of-islands/devyejin.py new file mode 100644 index 000000000..997bf1cbf --- /dev/null +++ b/number-of-islands/devyejin.py @@ -0,0 +1,31 @@ +from collections import deque +from typing import List + +class Solution: + def numIslands(self, grid: List[List[str]]) -> int: + def bfs(x, y): + queue = deque([(x, y)]) + grid[x][y] = "0" + + while queue: + r, c = queue.popleft() + + for d in range(4): + nr, nc = r + dr[d], c + dc[d] + if 0 <= nr < n and 0 <= nc < m and grid[nr][nc] == "1": + grid[nr][nc] = "0" + queue.append((nr, nc)) + + n, m = len(grid), len(grid[0]) + + dr = (-1, 1, 0, 0) + dc = (0, 0, -1, 1) + + result = 0 + for r in range(n): + for c in range(m): + if grid[r][c] == '1': + bfs(r, c) + result += 1 + + return result diff --git a/set-matrix-zeroes/devyejin.py b/set-matrix-zeroes/devyejin.py new file mode 100644 index 000000000..abb2460e7 --- /dev/null +++ b/set-matrix-zeroes/devyejin.py @@ -0,0 +1,20 @@ +from typing import List +class Solution: + def setZeroes(self, matrix: List[List[int]]) -> None: + """ + Do not return anything, modify matrix in-place instead. + """ + n, m = len(matrix), len(matrix[0]) + rows, cols = set(), set() + + for r in range(n): + for c in range(m): + if matrix[r][c] == 0: + rows.add(r) + cols.add(c) + + for r in range(n): + for c in range(m): + if r in rows or c in cols: + matrix[r][c] = 0 + diff --git a/unique-paths/devyejin.py b/unique-paths/devyejin.py new file mode 100644 index 000000000..5b58bdfa3 --- /dev/null +++ b/unique-paths/devyejin.py @@ -0,0 +1,11 @@ +# 시간 복잡도 O(mn), 공간복잡도 O(mn) +class Solution: + def uniquePaths(self, m: int, n: int) -> int: + dp = [[1] * n for _ in range(m)] + + for i in range(1, m): + for j in range(1, n): + dp[i][j] = dp[i - 1][j] + dp[i][j - 1] + + return dp[m - 1][n - 1] +