[sangbeenmoon] WEEK 09 Solutions - #2829
Conversation
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
maximum-product-subarray/sangbeenmoon.py
class Solution:
def maxProduct(self, nums: List[int]) -> int:
min_val = nums[0]
max_val = nums[0]
answer = max_val
for i in range(1, len(nums)):
target = nums[i]
prev_max_val = max_val
max_val = max(max_val * target, min_val * target, target)
min_val = min(prev_max_val * target, min_val * target, target)
answer = max(answer, max_val)
return answer
- ํจํด: Dynamic Programming, Two Pointers
- ์ค๋ช : ์ฐ์ ๊ตฌ๊ฐ์ ๊ณฑ์ ์ต๋๊ฐ์ ๊ตฌํ๊ธฐ ์ํด ํ์ฌ ๊ฐ๊ณผ ํจ๊ป ์ต๋/์ต์ ๊ฐ์ ์กฐํฉ์ ๊ฐฑ์ ํ๋ ๋ฐฉ์์ผ๋ก, ์์/์์ ๊ณฑ์ ๋ถํธ ๋ณํ๋ฅผ ๊ณ ๋ คํ๋ DP ์คํ์ผ์ ์ํ ๊ด๋ฆฌ ํจํด์ ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(1) |
ํผ๋๋ฐฑ: ํ ์์๋ฅผ ์ฒ๋ฆฌํ ๋ ํ์ฌ ์ต๋/์ต์ ๊ณฑ์ ๊ฐฑ์ ํ์ฌ ์ ์ฒด๋ฅผ ์ํํฉ๋๋ค. ์์ ๊ฐ์ ๋ณ์๋ง ์ฌ์ฉํ๋ฏ๋ก ์๊ฐ์ ์ ํ์ด๊ณ ๊ณต๊ฐ์ ์์์ ๋๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
๐ sangbeenmoon ๋์ ํ์ต ํํฉ์ด๋ฒ ์ฃผ ์ ์ถ ๋ฌธ์
๋์ ํ์ต ์์ฝ
๋ฌธ์ ํ์ด ํํฉ
๐ค ์ด ๋๊ธ์ GitHub App์ ํตํด ์๋์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๐ข API ์ฌ์ฉ๋ (gpt-5-nano)
|
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
pacific-atlantic-water-flow/sangbeenmoon.py
class Solution:
def pacificAtlantic(self, heights: List[List[int]]) -> List[List[int]]:
m,n = len(heights), len(heights[0])
pacific = [[False] * n for _ in range(m)]
atlantic = [[False] * n for _ in range(m)]
visited = [[False] * n for _ in range(m)]
dx = [0,0,-1,1]
dy = [-1,1,0,0]
def go(root_x:int, root_y:int, xx:int, yy:int):
for d in range(4):
nx = xx + dx[d]
ny = yy + dy[d]
if ny == -1 or nx == -1:
pacific[root_y][root_x] = True
if ny == m or nx == n:
atlantic[root_y][root_x] = True
if 0 <= ny and ny < m and 0 <= nx and nx < n:
if heights[ny][nx] <= heights[yy][xx] and not visited[ny][nx]:
visited[ny][nx] = True
go(root_x, root_y, nx, ny)
for y in range(m):
for x in range(n):
visited = [[False] * n for _ in range(m)]
go(x,y,x,y)
answer = []
for y in range(m):
for x in range(n):
if pacific[y][x] and atlantic[y][x]:
answer.append([y,x])
return answer- ํจํด: Depth-First Search, Backtracking, Dynamic Programming, Hash Map / Hash Set
- ์ค๋ช : ๋์ด๊ฐ ๋ ๋ฎ์ ์ธ์ ํ ์นธ์ผ๋ก DFS๋ฅผ ์ฌ๊ท ํ์ํ๋ฉฐ ๋ ๋ฐ๋ค์ ๋๋ฌ ๊ฐ๋ฅํ์ง ํ์ธํฉ๋๋ค. ๊ฐ ์ ์์ ์ฌ๊ท๋ฅผ ํตํด ๊ฒฝ๋ก๋ฅผ ์ถ์ ํ๊ณ ๋ฐฉ๋ฌธ ๊ด๋ฆฌ๋ก ์ค๋ณต ํ์์ ํผํ๋ ๊ตฌ์กฐ๊ฐ ํน์ง์ ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(mn(m+n)) |
| Space | O(m*n) |
ํผ๋๋ฐฑ: ๋งค ์นธ๋ง๋ค ์ DFS๋ฅผ ์์ํ๋ฏ๋ก ์ค๋ณต ๋ฐฉ๋ฌธ์ด ๋ง์ ์ต์ ์ ๊ฒฝ์ฐ ๋นํจ์จ์ ์ ๋๋ค. ๊ฐ ํด์์ ๋ํด ์ญ๋ฐฉํฅ์ผ๋ก ๋๋ฌ ๊ฐ๋ฅํ ์นธ์ ๋จผ์ ํ์ฅํ๋ ๋ฐฉ์์ด ์ผ๋ฐ์ ์ผ๋ก ๋ ํจ์จ์ ์ ๋๋ค.
๊ฐ์ ์ ์: ๊ณ ๋ คํด๋ณผ ๋งํ ๋์: ๊ฐ ํด์์์ ์์ํ๋ BFS/DFS๋ฅผ ์ฌ์ฉํด ๋๋ฌ ๊ฐ๋ฅํ ์นธ์ ํ์ํ ๋ค ๊ต์งํฉ์ ๊ตฌํ๋ ๋ฐฉ์์ผ๋ก ์๊ฐ๋ณต์ก๋๋ฅผ O(m*n)์ผ๋ก ๊ฐ์ .
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
๋ต์ ์ ์ถ ๋ฌธ์
์์ฑ์ ์ฒดํฌ ๋ฆฌ์คํธ
In Review๋ก ์ค์ ํด์ฃผ์ธ์.๊ฒํ ์ ์ฒดํฌ ๋ฆฌ์คํธ
Important
๋ณธ์ธ ๋ต์ ์ ์ถ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ถ PR ํ๋ ์ด์์ ๋ฐ๋์ ๊ฒํ ๋ฅผ ํด์ฃผ์ ์ผ ํฉ๋๋ค!