From 972490d932bd9063f29cc7128980deb63691481b Mon Sep 17 00:00:00 2001 From: Nayeon Date: Wed, 25 Jun 2025 08:30:37 -0400 Subject: [PATCH 1/4] Add placeholder for Find Median from Data Stream problem --- find-median-from-data-stream/KwonNayeon.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 find-median-from-data-stream/KwonNayeon.py diff --git a/find-median-from-data-stream/KwonNayeon.py b/find-median-from-data-stream/KwonNayeon.py new file mode 100644 index 000000000..c56a58b65 --- /dev/null +++ b/find-median-from-data-stream/KwonNayeon.py @@ -0,0 +1,15 @@ +""" +Constraints: +- -10^5 <= num <= 10^5 +- There will be at least one element in the data structure before calling findMedian. +- At most 5 * 10^4 calls will be made to addNum and findMedian. + +Time Complexity: +- + +Space Complexity: +- + +풀이방법: +- +""" From 2606c650e8b4ebed81d2400b6d8a335768cf4a45 Mon Sep 17 00:00:00 2001 From: Nayeon Date: Sat, 28 Jun 2025 10:03:49 -0400 Subject: [PATCH 2/4] Solve meeting rooms problem --- meeting-rooms/KwonNayeon.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/meeting-rooms/KwonNayeon.py b/meeting-rooms/KwonNayeon.py index 3df860ff5..7800eaeb9 100644 --- a/meeting-rooms/KwonNayeon.py +++ b/meeting-rooms/KwonNayeon.py @@ -13,12 +13,21 @@ 풀이방법: 1. Base case: 빈 배열/none일 때 True 반환 -2. intervals를 시작점 기준으로 정렬 -3. prev_end 초기화 (첫 번째 미팅의 종료 시간) +2. 리스트(ntervals)를 시작점 기준으로 정렬 +3. prev_end(첫 번째 미팅의 종료 시간) 변수 초기화 4. 두 번째 미팅부터 순회하면서: - 만약 현재 시작점 (미팅 시작 시간)이 이전 미팅의 종료 시간보다 작으면 false 반환 - 그렇지 않으면 prev_end를 현재 미팅의 종료 시간으로 업데이트 5. 모든 미팅을 검사한 후에도 충돌이 없으면 true 반환 + +메모: + +변수명 헷갈림: +- intervals는 리스트 -> `.end` 속성 없음 +- interval은 객체 -> `.end` 속성 있음 + +정렬 문법: +- list.sort(key=lambda x: x.start) """ from typing import List From 02fa577f0165782333a2dca410302400625b201d Mon Sep 17 00:00:00 2001 From: Nayeon Date: Sat, 28 Jun 2025 15:21:41 -0400 Subject: [PATCH 3/4] Solve Find median from data stream --- find-median-from-data-stream/KwonNayeon.py | 36 +++++++++++++++++++--- meeting-rooms/KwonNayeon.py | 6 ++-- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/find-median-from-data-stream/KwonNayeon.py b/find-median-from-data-stream/KwonNayeon.py index c56a58b65..8370c1909 100644 --- a/find-median-from-data-stream/KwonNayeon.py +++ b/find-median-from-data-stream/KwonNayeon.py @@ -5,11 +5,39 @@ - At most 5 * 10^4 calls will be made to addNum and findMedian. Time Complexity: -- +- addNum(): O(nlogn) + - 매번 정렬하기 때문 +- findMedian(): O(1) + - 정렬된 리스트에서 인덱스 접근 -Space Complexity: -- +Space Complexity: O(n) +- 입력된 모든 숫자를 리스트에 저장 풀이방법: -- +1. 리스트 자료구조 사용 +2. 리스트에 각 요소들 추가 후 정렬 +3. 리스트의 요소 갯수가 홀수/짝수일 때의 경우를 나눠서 median 값을 구함 + +메모: +- heap이 익숙하지 않아서 일단 리스트로 문제를 풀었습니다. +- 나중에 heap으로 다시 풀기 """ +class MedianFinder: + + def __init__(self): + self.nums = [] + + def addNum(self, num: int) -> None: + self.nums.append(num) + self.nums.sort() + + + def findMedian(self) -> float: + n = len(self.nums) + if n % 2 == 1: + return self.nums[n // 2] + else: + mid1 = self.nums[n // 2 - 1] + mid2 = self.nums[n // 2] + return (mid1 + mid2) / 2.0 + \ No newline at end of file diff --git a/meeting-rooms/KwonNayeon.py b/meeting-rooms/KwonNayeon.py index 7800eaeb9..af583106a 100644 --- a/meeting-rooms/KwonNayeon.py +++ b/meeting-rooms/KwonNayeon.py @@ -21,12 +21,10 @@ 5. 모든 미팅을 검사한 후에도 충돌이 없으면 true 반환 메모: - -변수명 헷갈림: +1. 변수명 헷갈림 - intervals는 리스트 -> `.end` 속성 없음 - interval은 객체 -> `.end` 속성 있음 - -정렬 문법: +2. 정렬 문법 - list.sort(key=lambda x: x.start) """ from typing import List From 8ad0e8d60c14739e38da48f25612c98d73548d9d Mon Sep 17 00:00:00 2001 From: Nayeon Date: Sat, 28 Jun 2025 15:24:04 -0400 Subject: [PATCH 4/4] Add newlines to Find median from data stream problem --- find-median-from-data-stream/KwonNayeon.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/find-median-from-data-stream/KwonNayeon.py b/find-median-from-data-stream/KwonNayeon.py index 8370c1909..bd2146bcb 100644 --- a/find-median-from-data-stream/KwonNayeon.py +++ b/find-median-from-data-stream/KwonNayeon.py @@ -40,4 +40,4 @@ def findMedian(self) -> float: mid1 = self.nums[n // 2 - 1] mid2 = self.nums[n // 2] return (mid1 + mid2) / 2.0 - \ No newline at end of file +