Skip to content

[sangbeenmoon] WEEK 09 Solutions - #2829

Open
sangbeenmoon wants to merge 1 commit into
DaleStudy:mainfrom
sangbeenmoon:week09
Open

[sangbeenmoon] WEEK 09 Solutions#2829
sangbeenmoon wants to merge 1 commit into
DaleStudy:mainfrom
sangbeenmoon:week09

Conversation

@sangbeenmoon

@sangbeenmoon sangbeenmoon commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

๋‹ต์•ˆ ์ œ์ถœ ๋ฌธ์ œ

์ž‘์„ฑ์ž ์ฒดํฌ ๋ฆฌ์ŠคํŠธ

  • Projects์˜ ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ(โ–ผ)์„ ๋ˆŒ๋Ÿฌ ํ™•์žฅํ•œ ๋’ค, Week๋ฅผ ํ˜„์žฌ ์ฃผ์ฐจ๋กœ ์„ค์ •ํ•ด์ฃผ์„ธ์š”.
  • ๋ฌธ์ œ๋ฅผ ๋ชจ๋‘ ํ‘ธ์‹œ๋ฉด ํ”„๋กœ์ ํŠธ์—์„œ Status๋ฅผ In Review๋กœ ์„ค์ •ํ•ด์ฃผ์„ธ์š”.
  • ์ฝ”๋“œ ๊ฒ€ํ† ์ž 1๋ถ„ ์ด์ƒ์œผ๋กœ๋ถ€ํ„ฐ ์Šน์ธ์„ ๋ฐ›์œผ์…จ๋‹ค๋ฉด PR์„ ๋ณ‘ํ•ฉํ•ด์ฃผ์„ธ์š”.

๊ฒ€ํ† ์ž ์ฒดํฌ ๋ฆฌ์ŠคํŠธ

Important

๋ณธ์ธ ๋‹ต์•ˆ ์ œ์ถœ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๋ถ„ PR ํ•˜๋‚˜ ์ด์ƒ์„ ๋ฐ˜๋“œ์‹œ ๊ฒ€ํ† ๋ฅผ ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค!

  • ๋ฐ”๋กœ ์ด์ „์— ์˜ฌ๋ผ์˜จ PR์— ๋ณธ์ธ์„ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์–ด๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.
  • ๋ณธ์ธ์ด ๊ฒ€ํ† ํ•ด์•ผํ•˜๋Š” PR์˜ ๋‹ต์•ˆ ์ฝ”๋“œ์— ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์„ธ์š”.
  • ํ† ์š”์ผ ์ „๊นŒ์ง€ PR์„ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์Šน์ธํ•ด์ฃผ์„ธ์š”.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๐Ÿท๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจํ„ด ๋ถ„์„

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)

ํ”ผ๋“œ๋ฐฑ: ํ•œ ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ํ˜„์žฌ ์ตœ๋Œ€/์ตœ์†Œ ๊ณฑ์„ ๊ฐฑ์‹ ํ•˜์—ฌ ์ „์ฒด๋ฅผ ์ˆœํšŒํ•ฉ๋‹ˆ๋‹ค. ์ƒ์ˆ˜ ๊ฐœ์˜ ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„์€ ์„ ํ˜•์ด๊ณ  ๊ณต๊ฐ„์€ ์ƒ์ˆ˜์ž…๋‹ˆ๋‹ค.

๊ฐœ์„  ์ œ์•ˆ: ํ˜„์žฌ ๊ตฌํ˜„์ด ์ ์ ˆํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก ํ’€์ด์— ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ฃผ์„์œผ๋กœ ๋‚จ๊ฒจ๋ณด์„ธ์š”!

@dalestudy

dalestudy Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

๐Ÿ“Š sangbeenmoon ๋‹˜์˜ ํ•™์Šต ํ˜„ํ™ฉ

์ด๋ฒˆ ์ฃผ ์ œ์ถœ ๋ฌธ์ œ

๋ฌธ์ œ ๋‚œ์ด๋„ ์œ ํ˜• ๋ถ„์„
maximum-product-subarray Medium โœ… ์˜๋„ํ•œ ์œ ํ˜•
pacific-atlantic-water-flow Medium โš ๏ธ ์œ ํ˜• ๋ถˆ์ผ์น˜

๋ˆ„์  ํ•™์Šต ์š”์•ฝ

  • ํ’€์ดํ•œ ๋ฌธ์ œ: 26 / 75๊ฐœ
  • ์ด๋ฒˆ ์ฃผ ์œ ํ˜• ์ผ์น˜์œจ: 50% (2๋ฌธ์ œ ์ค‘ 1๋ฌธ์ œ ์ผ์น˜)

๋ฌธ์ œ ํ’€์ด ํ˜„ํ™ฉ

์นดํ…Œ๊ณ ๋ฆฌ ์ง„ํ–‰๋„ ์™„๋ฃŒ
Matrix โ– โ– โ– โ– โ– โ–กโ–ก 3 / 4 (Medium 3)
Dynamic Programming โ– โ– โ– โ– โ– โ–กโ–ก 8 / 11 (Medium 8)
Array โ– โ– โ– โ–กโ–กโ–กโ–ก 4 / 10 (Medium 4)
String โ– โ– โ– โ–กโ–กโ–กโ–ก 4 / 10 (Medium 4)
Graph โ– โ– โ– โ–กโ–กโ–กโ–ก 3 / 8 (Medium 3)
Heap โ– โ– โ–กโ–กโ–กโ–กโ–ก 1 / 3 (Medium 1)
Tree โ– โ– โ–กโ–กโ–กโ–กโ–ก 3 / 14 (Medium 3)
Binary โ–กโ–กโ–กโ–กโ–กโ–กโ–ก 0 / 5 โ† ์•„์ง ์‹œ์ž‘ ์•ˆ ํ•จ
Interval โ–กโ–กโ–กโ–กโ–กโ–กโ–ก 0 / 5 โ† ์•„์ง ์‹œ์ž‘ ์•ˆ ํ•จ
Linked List โ–กโ–กโ–กโ–กโ–กโ–กโ–ก 0 / 6 โ† ์•„์ง ์‹œ์ž‘ ์•ˆ ํ•จ

๐Ÿค– ์ด ๋Œ“๊ธ€์€ GitHub App์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ข API ์‚ฌ์šฉ๋Ÿ‰ (gpt-5-nano)
์š”์ฒญ ์ž…๋ ฅ ํ† ํฐ ์ถœ๋ ฅ ํ† ํฐ ํ•ฉ๊ณ„ ๋น„์šฉ
1 890 117 1,007 $0.000091

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๐Ÿท๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจํ„ด ๋ถ„์„

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)์œผ๋กœ ๊ฐœ์„ .

๐Ÿ’ก ํ’€์ด์— ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ฃผ์„์œผ๋กœ ๋‚จ๊ฒจ๋ณด์„ธ์š”!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Development

Successfully merging this pull request may close these issues.

1 participant