[parkhojeong] WEEK 09 Solutions - #2832
Conversation
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
linked-list-cycle/parkhojeong.py
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def hasCycle(self, head: Optional[ListNode]) -> bool:
visited = set()
cur = head
while cur:
if cur in visited:
return True
visited.add(cur)
cur = cur.next
return False- ํจํด: Hash Map / Hash Set, Two Pointers
- ์ค๋ช : head ํฌ์ธํฐ๋ฅผ ์ํํ๋ฉฐ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ํด์ ์ ์ผ๋ก ์ถ์ ํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ดํด ์ฌ๋ถ๋ฅผ ํ๋จํฉ๋๋ค. ํ ๋ฒ ๋ฐฉ๋ฌธ๋ ๋ ธ๋๋ฅผ ์ฌ๋ฐฉ๋ฌธํ๋ฉด ์ฌ์ดํด์ด ์กด์ฌํจ์ ๋ฐํํฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(n) |
| Space | O(n) |
ํผ๋๋ฐฑ: ๊ฐ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ์ ์ฅํ๋ ์งํฉ์ ์ฌ์ฉํด ์ํ ์ฌ๋ถ๋ฅผ ํ๋จํฉ๋๋ค. ์ต์ ์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ ธ๋๋ฅผ ๊ฒ์ฌํ๋ฏ๋ก ์๊ฐ ๋ณต์ก๋๋ ์ ํ์ด๊ณ , ์ถ๊ฐ ์ ์ฅ ๊ณต๊ฐ์ ๋ฐฉ๋ฌธ ๋ ธ๋ ์์ ๋น๋กํฉ๋๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
๐ parkhojeong ๋์ ํ์ต ํํฉ์ด๋ฒ ์ฃผ ์ ์ถ ๋ฌธ์
๋์ ํ์ต ์์ฝ
๋ฌธ์ ํ์ด ํํฉ
๐ค ์ด ๋๊ธ์ GitHub App์ ํตํด ์๋์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๐ข API ์ฌ์ฉ๋ (gpt-5-nano)
|
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
pacific-atlantic-water-flow/parkhojeong.py
class Solution:
def pacificAtlantic(self, heights: List[List[int]]) -> List[List[int]]:
pacific_set = set()
atlantic_set = set()
m = len(heights)
n = len(heights[0])
DIR = [(-1, 0), (1, 0), (0, -1), (0, 1)]
def dfs(start: tuple[int], row: int, col: int, prev_water: int, prev: set[int]):
if (row, col) in prev:
return
prev.add((row, col))
if prev_water < heights[row][col]:
return
if row == 0 or col == 0:
pacific_set.add(start)
if row == m - 1 or col == n - 1:
atlantic_set.add(start)
for dr, dc in DIR:
next_r, next_c = row + dr, col + dc
if 0 <= next_r < m and 0 <= next_c < n and heights[row][col] >= heights[next_r][next_c]:
dfs(start, next_r, next_c, heights[row][col], prev)
for row in range(m):
for col in range(n):
prev = set()
dfs((row, col), row, col, 10000000, prev)
res = []
for row in range(m):
for col in range(n):
if (row, col) in pacific_set and (row, col) in atlantic_set:
res.append((row, col))
return res- ํจํด: Depth-First Search, Backtracking, Dynamic Programming
- ์ค๋ช : ์ฝ๋๋ ๊ฐ ์ ์์ DFS๋ฅผ ํตํด ์ธ์ ํ ์ ๋ก ์ด๋ํ๋ฉฐ ๋์ด ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒฝ๋ก๋ฅผ ํ์ํฉ๋๋ค. ์ฌ๋ฌ ์์์ ์์ ๋ฐฑํธ๋ํน ํํ๋ก ํ์ํ๊ณ , ๋ ๋ฐฉํฅ ๋ฐ๋ค์ ๋๋ฌํ๋์ง ์ถ์ ํ๋ ๋ฐฉ์์ด ํฌํจ๋์ด ์์ต๋๋ค. ๋ค๋ง ๋ช ์์ DP ์ต์ ํ ์์ด DFS ๊ธฐ๋ฐ ํ์๊ณผ ๋ฐฑํธ๋ํน์ด ์ฃผ๋ฅผ ์ด๋ฃน๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋ณต์ก๋ | |
|---|---|
| Time | O(mn(m+n)) |
| Space | O(m*n) |
ํผ๋๋ฐฑ: ๊ฐ ์ ์ ๋ํด DFS๋ฅผ ์ํํ๊ณ , ์ฌ๋ฐฉ๋ฌธ์ ๋ง๊ธฐ ์ํด ๊ฐ ํ์๋ง๋ค ๋ฐฉ๋ฌธ ์งํฉ์ ์ฌ์ฉํ๋ค. ์ด๋ก ์ธํด ์ค๋ณต ํ์์ด ๋ง์ ๋นํจ์จ์ ์ผ ์ ์๋ค.
๊ฐ์ ์ ์: ๊ณ ๋ คํด๋ณผ ๋งํ ๋์: ์๋ฐฉํฅ BFS๋ฅผ ๊ฐ๊ฐ์ ๋ฐ๋ค์์ ์์ํด ๋๋ฌ ๊ฐ๋ฅํ ์ ์ ๊ตฌํ๊ณ ๊ต์งํฉ์ ์ฐพ๋ ๋ฐฉ์์ผ๋ก ์๊ฐ ๋ณต์ก๋๋ฅผ O(m*n)์ผ๋ก ๊ฐ์ ํ ์ ์์ต๋๋ค.
๐ก ํ์ด์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ณด์ธ์!
ICE0208
left a comment
There was a problem hiding this comment.
9์ฃผ์ฐจ ๋ฌธ์ ํ์ด๋ ์๊ณ ๋ง์ผ์ จ์ต๋๋ค! ๐
There was a problem hiding this comment.
visited ๋ฅผ ์ฌ์ฉํด์ ์ด์ ์ ๋ฐฉ๋ฌธํ ๋
ธ๋์ธ์ง ํ๋จํ๋ ๋ก์ง์ด ์ง๊ด์ ์ด๋ผ ์ดํดํ๊ธฐ ์ฝ๋ค์!
ํ๋ก์ด๋ ์ํ ์ฐพ๊ธฐ ์๊ณ ๋ฆฌ์ฆ ์ ์ด์ฉํด์ ๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์ค์ผ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค!
There was a problem hiding this comment.
๊ฐ์ฌํฉ๋๋ค. ๊ทธ๋ ๊ฒ๋ ํ ๋ฒ ํ์ด๋ณด๊ฒ ์ต๋๋ค
There was a problem hiding this comment.
์ ๋ ์ฒ์์๋ ๊ฐ ์ขํ์์ DFS๋ฅผ ์์ํ๋ ๋ฐฉ์์ผ๋ก ํ์๋๋ฐ, ์๊ฐํด์ผ ํ ์กฐ๊ฑด์ด ๋ง์ ์กฐ๊ธ ๋ณต์กํด์ง๋๋ผ๊ณ ์!
๋ฐ๋๋ก ๊ฐ ๋ฐ๋ค์ ๊ฒฝ๊ณ์์ ์์ํด์ ๋๋ฌ ๊ฐ๋ฅํ ์ขํ๋ฅผ ํ์ธํ๋ ๋ฐฉ์์ผ๋ก ํ์ด๋ณด๋ ์กฐ๊ธ ๋ ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์์์ต๋๋ค. ์ฐธ๊ณ ์ฉ์ผ๋ก ์ฝ๋ฉํธ ๋จ๊ฒจ๋์ต๋๋ค :)
There was a problem hiding this comment.
๋ฐ๋๋ก ์์ํ๋ ๊ฒ๋ ๊ด์ฐฎ๊ฒ ๋ค์. ์๋ ค์ฃผ์ ๋ฐฉ์์ผ๋ก๋ ํ์ด๋ณด๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
๋ต์ ์ ์ถ ๋ฌธ์
์์ฑ์ ์ฒดํฌ ๋ฆฌ์คํธ
In Review๋ก ์ค์ ํด์ฃผ์ธ์.๊ฒํ ์ ์ฒดํฌ ๋ฆฌ์คํธ
Important
๋ณธ์ธ ๋ต์ ์ ์ถ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ถ PR ํ๋ ์ด์์ ๋ฐ๋์ ๊ฒํ ๋ฅผ ํด์ฃผ์ ์ผ ํฉ๋๋ค!