Skip to content

[yuseok89] WEEK 11 Solutions - #2848

Open
yuseok89 wants to merge 6 commits into
DaleStudy:mainfrom
yuseok89:main
Open

[yuseok89] WEEK 11 Solutions#2848
yuseok89 wants to merge 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) โœ…

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

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

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