From 1d6f9b2419269ab63c2635792d67b1ae1073eb91 Mon Sep 17 00:00:00 2001 From: KyungJin Jung Date: Sat, 5 Sep 2026 20:15:46 +0900 Subject: [PATCH 1/3] 56. Merge Intervals --- merge-intervals/okyungjin.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 merge-intervals/okyungjin.py diff --git a/merge-intervals/okyungjin.py b/merge-intervals/okyungjin.py new file mode 100644 index 0000000000..9b93b49ec7 --- /dev/null +++ b/merge-intervals/okyungjin.py @@ -0,0 +1,29 @@ +''' +https://leetcode.com/problems/merge-intervals/description/ + +N: len(intervals) +Time: O(N logN), 정렬 +Space: O(N), answer 배열 +''' +class Solution: + def merge(self, intervals: List[List[int]]) -> List[List[int]]: + intervals.sort(key=lambda x: x[0]) + + answer = [intervals[0]] + + ''' + [1,4], [5,8] # case A + [1,4], [4,7] # case B + [1,4], [2,8] # case C + ''' + + for i in range(1, len(intervals)): + curr_start, curr_end = intervals[i] + _, last_end = answer[-1] + + if curr_start > last_end: # case A + answer.append(intervals[i]) + elif curr_end > last_end: # case C + answer[-1][1] = curr_end + + return answer From 652d2fcfb1c12b90fd7a954b73e9523b60cef2e5 Mon Sep 17 00:00:00 2001 From: KyungJin Jung Date: Sat, 5 Sep 2026 20:38:17 +0900 Subject: [PATCH 2/3] 268. Missing Number --- missing-number/okyungjin.py | 43 +++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 missing-number/okyungjin.py diff --git a/missing-number/okyungjin.py b/missing-number/okyungjin.py new file mode 100644 index 0000000000..70baf8ee80 --- /dev/null +++ b/missing-number/okyungjin.py @@ -0,0 +1,43 @@ +''' +https://leetcode.com/problems/missing-number/description/ +''' + +''' +solution1: 정렬 후 이진탐색 + +n: len(nums) +Time: O(n log n), sort +Space: O(1) +''' +class Solution: + def missingNumber(self, nums: List[int]) -> int: + nums.sort() # Time: O(n log n) + + left = 0 + right = len(nums) + + while left < right: # Time: O(log n) + mid = (left + right) // 2 + + if nums[mid] > mid: + right = mid + else: + left = mid + 1 + + return left + +''' +solution2: 0부터 n까지 더한 값에서 배열의 전체 합을 빼기 + +n: len(nums) +Time: O(n) +Space: O(1) +''' +class Solution: + def missingNumber(self, nums: List[int]) -> int: + n = len(nums) + + complete_sum = n * (n + 1) // 2 + actual_sum = sum(nums) # Time: O(n) + + return complete_sum - actual_sum From 5cd158fde4fd7742934418092fa7f2b8e8f07c25 Mon Sep 17 00:00:00 2001 From: KyungJin Jung Date: Sat, 5 Sep 2026 21:25:51 +0900 Subject: [PATCH 3/3] 143. Reorder List --- reorder-list/okyungjin.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 reorder-list/okyungjin.py diff --git a/reorder-list/okyungjin.py b/reorder-list/okyungjin.py new file mode 100644 index 0000000000..35dbd2c164 --- /dev/null +++ b/reorder-list/okyungjin.py @@ -0,0 +1,29 @@ +""" +https://leetcode.com/problems/reorder-list/ + +N: number of nodes +Time: O(N) +Space: O(N) +""" +class Solution: + def reorderList(self, head: Optional[ListNode]) -> None: + nodes = [] + curr = head + while curr: + nodes.append(curr) + curr = curr.next + + left = 0 + right = len(nodes) - 1 + + while left < right: + nodes[left].next = nodes[right] + left += 1 + + if left == right: + break + + nodes[right].next = nodes[left] + right -= 1 + + nodes[left].next = None