Skip to content

[yuseok89] WEEK 11 Solutions - #2848

Merged
yuseok89 merged 6 commits into
DaleStudy:mainfrom
yuseok89:main
Sep 5, 2026
Merged

[yuseok89] WEEK 11 Solutions#2848
yuseok89 merged 6 commits into
DaleStudy:mainfrom
yuseok89:main

Conversation

@yuseok89

@yuseok89 yuseok89 commented Sep 3, 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.

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

binary-tree-maximum-path-sum/yuseok89.py
# TC: O(N)
# SC: O(1)
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def maxPathSum(self, root: Optional[TreeNode]) -> int:

        ans = float('-inf')

        def get_max(cur: Optional[TreeNode]) -> int:
            nonlocal ans

            if cur is None:
                return 0

            left_max = get_max(cur.left)
            right_max = get_max(cur.right)

            ans = max(ans, cur.val, cur.val + left_max, cur.val + right_max, cur.val +left_max + right_max)

            return max(cur.val, cur.val + max(left_max, right_max))

        get_max(root)

        return ans
  • ํŒจํ„ด: Depth-First Search, Dynamic Programming, Binary Search
  • ์„ค๋ช…: ํŠธ๋ฆฌ์˜ ๊ฐ ๋…ธ๋“œ์—์„œ ์ขŒ์šฐ ์ž์‹์˜ ์ตœ๋Œ€ ํ•ฉ์„ ์žฌ๊ท€์ ์œผ๋กœ ๊ณ„์‚ฐํ•˜๋ฉฐ, ๊ธ€๋กœ๋ฒŒ ์ตœ๋Œ“๊ฐ’์„ ๊ฐฑ์‹ ํ•˜๋Š” ๋ฐฉ์‹์€ DFS๋กœ ํŠธ๋ฆฌ๋ฅผ ์ˆœํšŒํ•˜๊ณ , ๊ฐ ๋…ธ๋“œ์˜ ์ •๋ณด๋ฅผ ์žฌํ™œ์šฉํ•ด ์ตœ๋Œ“๊ฐ’์„ ๋ˆ„์ ํ•˜๋Š” DP์  ํŒจํ„ด๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ถ€๋ถ„ํ•ด๋ฅผ ํ•ฉ์œผ๋กœ ๊ณ ๋ คํ•˜๋Š” ๊ตฌ์กฐ๋Š” ํŠธ๋ฆฌ์—์„œ์˜ ์ตœ์ ํ•ด ๊ตฌ์„ฑ์˜ DP ์„ฑ์งˆ์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Š ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

์œ ์ € ๋ถ„์„ ์‹ค์ œ ๋ถ„์„ ๊ฒฐ๊ณผ
Time O(N) O(n) โœ…
Space O(1) O(h) โŒ

ํ”ผ๋“œ๋ฐฑ: ๊ฐ ๋…ธ๋“œ์—์„œ ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ ์ž์‹์—์„œ์˜ ์ตœ๋Œ€ ์ฆ๊ฐ€๋ถ„์„ ๊ตฌํ•˜๊ณ , ์ด๋ฅผ ์ด์šฉํ•ด ํ˜„์žฌ ๋…ธ๋“œ๋ฅผ ํฌํ•จํ•œ ๊ฒฝ๋กœ์˜ ์ตœ๋Œ€ ํ•ฉ๊ณผ ๋ฆฌํ„ด ๊ฐ’์„ ๊ณ„์‚ฐํ•œ๋‹ค.

๊ฐœ์„  ์ œ์•ˆ: ํ˜„์žฌ ๊ตฌํ˜„์€ ์ „ํ˜•์ ์ธ DFS ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” ์žฌ๊ท€ ํ˜ธ์ถœ ๊นŠ์ด์— ๋”ฐ๋ผ ์ขŒ์šฐ ๊นŠ์ด์˜ ํ•ฉ ์ค‘ ์ตœ๋Œ“๊ฐ’์ธ h์— ๋น„๋ก€ํ•œ๋‹ค. ํ•„์š” ์‹œ ์ˆœํšŒ ๋ฐฉ์‹์œผ๋กœ์˜ ๋ณ€ํ™˜์ด๋‚˜ tail recursion ์ตœ์ ํ™”๋ฅผ ๊ณ ๋ คํ•ด๋„ ๋œ๋‹ค.

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.

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

merge-intervals/yuseok89.py
# TC: O(NlogN)
# SC: O(N)
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:

        ans = list()

        intervals.sort(key=lambda x:x[0])

        ans.append([intervals[0][0]])

        end = intervals[0][1]

        for idx in range(1, len(intervals)):
            if intervals[idx][0] <= end:
                end = max(end, intervals[idx][1])
            else:
                ans[-1].append(end)
                ans.append([intervals[idx][0]])
                end = intervals[idx][1]

        ans[-1].append(end)

        return ans
  • ํŒจํ„ด: Greedy, Sort
  • ์„ค๋ช…: Intervals ์ •๋ ฌ ํ›„ ๊ฒน์น˜๋Š” ๊ตฌ๊ฐ„์„ ํ•˜๋‚˜์˜ ๊ตฌ๊ฐ„์œผ๋กœ ํ•ฉ์น˜๋Š” ๊ณผ์ •์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ Greedy ํŒจํ„ด์œผ๋กœ ๋ถ„๋ฅ˜๋˜๋ฉฐ, ๋จผ์ € ์‹œ์ž‘์ ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ์ „๋žต์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ํˆฌํฌ์ธํ„ฐ์ฒ˜๋Ÿผ ํ˜„์žฌ ๊ตฌ๊ฐ„์˜ ๋๊ณผ ๋‹ค์Œ ๊ตฌ๊ฐ„์˜ ์‹œ์ž‘์„ ๋น„๊ตํ•ด ํ™•์žฅ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Š ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

์œ ์ € ๋ถ„์„ ์‹ค์ œ ๋ถ„์„ ๊ฒฐ๊ณผ
Time O(NlogN) O(n log n) โœ…
Space O(N) O(n) โœ…

ํ”ผ๋“œ๋ฐฑ: ์ •๋ ฌ๊ณผ ์„ ํ˜• ์ˆœํšŒ๋กœ ๊ฒน์น˜๋Š” ๊ตฌ๊ฐ„๋“ค์„ ํ•ฉ์นœ๋‹ค. ์‹œ์ž‘์  ์ •๋ ฌ์ด ํ•ต์‹ฌ์ด๋‹ค.

๊ฐœ์„  ์ œ์•ˆ: ํ˜„์žฌ ๊ตฌํ˜„์€ ๊ธฐ๋ณธ์ ์ธ ํ’€์ด๋กœ ์ ์ ˆํ•˜๋‹ค. ํ•„์š” ์‹œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋‚˜ ๋น„์–ด์žˆ๋Š” ์ž…๋ ฅ์— ๋Œ€ํ•œ ๋ฐฉ์–ด ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

@dalestudy

dalestudy Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

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

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

๋ฌธ์ œ ๋‚œ์ด๋„ ์œ ํ˜• ๋ถ„์„
binary-tree-maximum-path-sum Hard โœ… ์˜๋„ํ•œ ์œ ํ˜•
merge-intervals Medium โœ… ์˜๋„ํ•œ ์œ ํ˜•
missing-number Easy โœ… ์˜๋„ํ•œ ์œ ํ˜•
reorder-list Medium โœ… ์˜๋„ํ•œ ์œ ํ˜•

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

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

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

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

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

๐Ÿ”ข API ์‚ฌ์šฉ๋Ÿ‰ (gpt-5-nano)
์š”์ฒญ ์ž…๋ ฅ ํ† ํฐ ์ถœ๋ ฅ ํ† ํฐ ํ•ฉ๊ณ„ ๋น„์šฉ
1 1,471 183 1,654 $0.000147
2 1,470 222 1,692 $0.000162
3 1,469 158 1,627 $0.000137
ํ•ฉ๊ณ„ 4,410 563 4,973 $0.000446

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.

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

missing-number/yuseok89.py
# TC: O(N)
# SC: O(1)
class Solution:
    def missingNumber(self, nums: List[int]) -> int:
        n = len(nums)
        total = n * (n + 1) // 2

        for num in nums:
            total -= num

        return total
  • ํŒจํ„ด: Greedy, Bit Manipulation, Dynamic Programming, Hash Map / Hash Set, Divide and Conquer, Two Pointers, Sliding Window, Backtracking, DFS, BFS, Union Find, Trie, Heap / Priority Queue, Monotonic Stack, Binary Search
  • ์„ค๋ช…: ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์ˆ˜์˜ ํ•ฉ ๊ณต์‹์„ ์ด์šฉํ•ด ๋ˆ„๋ฝ๋œ ์ˆซ์ž๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ „์ฒด ํ•ฉ์—์„œ ๋ฐฐ์šด ๊ฐ’๋“ค์„ ์ฐจ๊ฐํ•˜๋Š” ์•„์ด๋””์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฌธ์ œ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(N), ๊ณต๊ฐ„๋ณต์žก๋„๋Š” O(1)๋กœ ๊ตฌํ˜„๋œ๋‹ค.

๐Ÿ“Š ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

์œ ์ € ๋ถ„์„ ์‹ค์ œ ๋ถ„์„ ๊ฒฐ๊ณผ
Time O(N) O(n) โœ…
Space O(1) O(1) โœ…

ํ”ผ๋“œ๋ฐฑ: ๋“ฑ์ฐจ์ˆ˜์—ด์˜ ํ•ฉ ๊ณต์‹์„ ์ด์šฉํ•ด ํ•œ ๋ฒˆ์˜ ์ˆœํšŒ๋กœ ๋ˆ„๋ฝ ์ˆซ์ž๋ฅผ ๊ตฌํ•œ๋‹ค.

๊ฐœ์„  ์ œ์•ˆ: ํ˜„์žฌ ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์ด๋‹ค. ์ž…๋ ฅ์— ๋นˆ ๋ฐฐ์—ด ๋“ฑ์˜ ํŠน์ˆ˜ ์ผ€์ด์Šค๋ฅผ ๊ฐ€์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ถ”๊ฐ€ ๋ฐฉ์–ด๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.

Comment thread reorder-list/yuseok89.py

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.

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

reorder-list/yuseok89.py
# TC: O(N)
# SC: O(1)
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reorderList(self, head: Optional[ListNode]) -> None:
        """
        Do not return anything, modify head in-place instead.
        """

        if not head or not head.next:
            return

        def rec(right: Optional[ListNode]) -> Optional[ListNode]:
            if not right:
                return head

            left = rec(right.next)

            if not left:
                return None

            if left == right or left.next == right:
                right.next = None
                return None

            nxt_left = left.next
            left.next = right
            right.next = nxt_left

            return nxt_left

        rec(head)
  • ํŒจํ„ด: Recursion, Two Pointers, Linked List
  • ์„ค๋ช…: ์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด ๋ฆฌ์ŠคํŠธ์˜ ๋์—์„œ๋ถ€ํ„ฐ ์™ผ์ชฝ ํฌ์ธํ„ฐ๋ฅผ ์›€์ง์ด๋ฉฐ ๋…ธ๋“œ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ๋‘ ํฌ์ธํ„ฐ๊ฐ€ ์„œ๋กœ ์ธ์ ‘ํ•  ๋•Œ ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๊ฑธ๊ณ  ์—ฐ๊ฒฐ์„ ์žฌ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋ถ„์ ์œผ๋กœ ์žฌ๊ท€ ๊นŠ์ด๋ฅผ ํ†ตํ•ด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜์ „๋œ ๋ฐฉํ–ฅ์œผ๋กœ ์ˆœํšŒํ•˜๋ฉฐ O(N) ์‹œ๊ฐ„, O(1) ์ถ”๊ฐ€ ๊ณต๊ฐ„ ํŠน์„ฑ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

๐Ÿ“Š ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

์œ ์ € ๋ถ„์„ ์‹ค์ œ ๋ถ„์„ ๊ฒฐ๊ณผ
Time O(N) O(n) โœ…
Space O(1) O(1) โœ…

ํ”ผ๋“œ๋ฐฑ: ์ „ํ˜•์ ์ธ ์œ„์ƒ ์ •๋ ฌ/๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์กฐํ•ฉ์œผ๋กœ ์žฌ๋ฐฐ์น˜ํ•œ๋‹ค. ์žฌ๊ท€์™€ ํฌ์ธํ„ฐ ์กฐ์ž‘์œผ๋กœ in-place๋ฅผ ๋‹ฌ์„ฑํ•œ๋‹ค.

๊ฐœ์„  ์ œ์•ˆ: ํ˜„์žฌ ๊ตฌํ˜„์€ ์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„์„ ์ˆœํšŒํ•˜๋ฉฐ ์žฌ๋ฐฐ์น˜๋ฅผ ์‹œ๋„ํ•œ๋‹ค. ๊ตฌํ˜„์˜ ๋ณต์žก๋„๊ฐ€ ๋‹ค์†Œ ๋†’์œผ๋ฏ€๋กœ ๋ฐ˜๋ณต์  ์ ‘๊ทผ์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง์„ ๊ณ ๋ คํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

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.

์—„์ฒญ ๊น”๋”ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜์…จ๋„ค์š”, ์ž˜ ๋ณด๊ณ  ๊ฐ‘๋‹ˆ๋‹ค!

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.

๊ตฌํ˜„ ์ƒ๋‹นํžˆ ๊น”๋”ํ•˜๊ฒŒ ์ž˜ ํ•˜์…จ๋„ค์š”

Comment thread reorder-list/yuseok89.py

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.

์™€์šฐ ์—„์ฒญ ๊น”๋”ํ•˜๊ฒŒ ์ž˜ ํ‘ธ์…จ๋„ค์š”

@dolphinflow86
dolphinflow86 self-requested a review September 4, 2026 16:15

@dolphinflow86 dolphinflow86 left a comment

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.

์ˆ˜๊ณ ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค!

Comment thread reorder-list/yuseok89.py Outdated
@@ -0,0 +1,37 @@
# TC: O(N)
# SC: O(1)

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.

@yuseok89 ์š”๊ฑฐ ์žฌ๊ท€ ํ˜ธ์ถœ์ธ๋ฐ ๊ณต๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์žฌ๊ท€ ํ˜ธ์ถœ ๊นŠ์ด๋งŒํผ์ด๋ผ O(N) ๊นŒ์ง€ ๊นŠ์–ด์ง‘๋‹ˆ๋‹ค.
ํ•œ๋ฒˆ ํ™•์ธํ•ด๋ณด์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

๋ฆฌ๋ทฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ™

@@ -0,0 +1,30 @@
# TC: O(N)
# SC: O(1)

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.

@yuseok89 ์—ฌ๊ธฐ๋„ ๊ณต๊ฐ„๋ณต์žก๋„๊ฐ€ ์Šคํƒ ๊นŠ์ด๋งŒํผ ๊นŠ์–ด์ง€๋Š” ๋ถ€๋ถ„ ํ™•์ธ ํ•ด ๋ณด์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค~!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

๊ณต๊ฐ„๋ณต์žก๋„ ๊ณ„์‚ฐ ํ•˜๋ฉด์„œ ์žฌ๊ท€๋ถ€๋ถ„์„ ์ž๊พธ ๋นผ๋จน๋„ค์š”.
๋ฆฌ๋ทฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ™

Comment thread reorder-list/yuseok89.py

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.

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

reorder-list/yuseok89.py
# TC: O(N)
# SC: O(N)
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reorderList(self, head: Optional[ListNode]) -> None:
        """
        Do not return anything, modify head in-place instead.
        """

        if not head or not head.next:
            return

        def rec(right: Optional[ListNode]) -> Optional[ListNode]:
            if not right:
                return head

            left = rec(right.next)

            if not left:
                return None

            if left == right or left.next == right:
                right.next = None
                return None

            nxt_left = left.next
            left.next = right
            right.next = nxt_left

            return nxt_left

        rec(head)
  • ํŒจํ„ด: Two Pointers, Recursion, Linked List
  • ์„ค๋ช…: ์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด ๋ฆฌ์ŠคํŠธ์˜ ์ขŒ์ธก ๋…ธ๋“œ์™€ ์šฐ์ธก ๋…ธ๋“œ๋ฅผ ๊ต์ฐจ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ์žฌ๊ท€ ํ˜ธ์ถœ๋กœ ์ขŒ์ธก ํฌ์ธํ„ฐ๋ฅผ ์–ป๊ณ  ์ขŒ์šฐ๋ฅผ ๋ฒˆ๊ฐˆ์•„ ๋ถ™์—ฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•œ๋‹ค. ์—ฐ๊ฒฐ ์ˆœ์„œ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ์—ฐ์‚ฐ์€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ง„ํ–‰๋˜๋ฉฐ, ์žฌ๊ท€ ๊นŠ์ด์™€ ํฌ์ธํ„ฐ ์กฐ์ž‘์ด ํ•ต์‹ฌ ํฌ์ธํŠธ๋‹ค.

๐Ÿ“Š ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

์œ ์ € ๋ถ„์„ ์‹ค์ œ ๋ถ„์„ ๊ฒฐ๊ณผ
Time O(N) O(n) โœ…
Space O(N) O(n) โœ…

ํ”ผ๋“œ๋ฐฑ: ์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„์˜ ๋…ธ๋“œ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉฐ ์™ผ์ชฝ ๋ถ€๋ถ„๊ณผ ์—ฐ๊ฒฐ์„ ๊ตฌ์„ฑํ•œ๋‹ค. ์žฌ๊ท€ ๊นŠ์ด๊ฐ€ O(n)๊นŒ์ง€ ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ ๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” ์Šคํƒ ๊นŠ์ด์— ์˜ํ•ด ๊ฒฐ์ •๋œ๋‹ค.

๊ฐœ์„  ์ œ์•ˆ: ๊ณ ๋ คํ•ด๋ณผ ๋งŒํ•œ ๋Œ€์•ˆ: ์žฌ๊ท€ ๋Œ€์‹  ๋‘ ํฌ์ธํ„ฐ(๋น ๋ฅธ/๋А๋ฆฐ)๋กœ ์ค‘๊ฐ„์„ ๋ถ„๋ฆฌํ•˜๊ณ , ๋’ค์—์„œ๋ถ€ํ„ฐ ์—ฐ๊ฒฐํ•˜๊ธฐ๋ณด๋‹ค ๋ฐฐ์—ด์— ๋…ธ๋“œ๋ฅผ ๋ชจ์•„ ์—ญ์ˆœ์œผ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ณต๊ฐ„ ์‚ฌ์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ tail ํฌ์ธํ„ฐ๋ฅผ ์œ ์ง€ํ•ด ๋ถˆํ•„์š”ํ•œ ๋…ธ๋“œ ์žฌํ• ๋‹น ์—†์ด O(1) ๊ณต๊ฐ„์œผ๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค.

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.

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

binary-tree-maximum-path-sum/yuseok89.py
# TC: O(N)
# SC: O(H)
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def maxPathSum(self, root: Optional[TreeNode]) -> int:

        ans = float('-inf')

        def get_max(cur: Optional[TreeNode]) -> int:
            nonlocal ans

            if cur is None:
                return 0

            left_max = get_max(cur.left)
            right_max = get_max(cur.right)

            ans = max(ans, cur.val, cur.val + left_max, cur.val + right_max, cur.val +left_max + right_max)

            return max(cur.val, cur.val + max(left_max, right_max))

        get_max(root)

        return ans
  • ํŒจํ„ด: Binary Search, Depth-First Search, Dynamic Programming, Tree Traversal
  • ์„ค๋ช…: ์ฃผ์–ด์ง„ ์ฝ”๋“œ๋Š” ์ด์ง„ ํŠธ๋ฆฌ์—์„œ ๋ชจ๋“  ๊ฒฝ๋กœ์˜ ํ•ฉ์„ ํƒ์ƒ‰ํ•˜๋ฉฐ, ์ž์‹ ๋…ธ๋“œ์˜ ์ •๋ณด๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ํ•ฉ์‚ฐํ•ด ์ตœ๋Œ“๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. ๊ฐ ๋…ธ๋“œ์—์„œ ์ขŒ์šฐ ์„œ๋ธŒํŠธ๋ฆฌ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•ด ์ตœ๋Œ“ ๊ฒฝ๋กœ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ์‹์€ DFS์™€ DP์˜ ํ˜ผํ•ฉ ํŒจํ„ด์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Š ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

์œ ์ € ๋ถ„์„ ์‹ค์ œ ๋ถ„์„ ๊ฒฐ๊ณผ
Time O(N) O(n) โœ…
Space O(H) O(h) โœ…

ํ”ผ๋“œ๋ฐฑ: ์ „์œ„ ํƒ์ƒ‰๊ณผ ์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด ์ž์‹ ๋…ธ๋“œ์˜ ์ตœ๋Œ€ ์ฆ๊ฐ€ ํ•ฉ์„ ํ•ฉ์‚ฐํ•˜๊ณ , ํ˜„์žฌ ๋…ธ๋“œ์—์„œ ํ˜•์„ฑ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.

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

@yuseok89
yuseok89 merged commit 478ad11 into DaleStudy:main Sep 5, 2026
1 check passed
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.

3 participants