diff --git a/binary-tree-level-order-traversal/Seoya0512.py b/binary-tree-level-order-traversal/Seoya0512.py new file mode 100644 index 0000000000..b476df4d93 --- /dev/null +++ b/binary-tree-level-order-traversal/Seoya0512.py @@ -0,0 +1,31 @@ +'''' +Time Complexity: O(N) +- 모든 노드를 한 번씩 방문하므로 O(N) + +Space Complexity: O(N) +- 결과를 저장하기 위해 values 리스트와 큐에 최대 N개의 노드가 저장 +''' +from collections import deque + +class Solution: + def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: + result = [] + + if not root: + return result + + queue = deque([root]) + + while queue: + values = [] + for _ in range(len(queue)): # 같은 레벨에 있는 노드를 함께 처리 + node = queue.popleft() + values.append(node.val) + if node.left: + queue.append(node.left) + if node.right: + queue.append(node.right) + + result.append(values) + + return result diff --git a/house-robber-ii/Seoya0512.py b/house-robber-ii/Seoya0512.py new file mode 100644 index 0000000000..e250a05871 --- /dev/null +++ b/house-robber-ii/Seoya0512.py @@ -0,0 +1,20 @@ +''' +Time Complexity: O(N) +- dpf 함수를 nums의 길이에 대해 2번 호출 하므로 O(N) + O (N) = O(N) + +Space Complexity: O(N) +- dfp 함수에서 dp 배열을 생성해서 저장하는 공강 O(N) 소요 +''' +from typing import ( + List, +) + +def rob(nums: List[int]) -> int: + def dpf(nums): + dp = [0]+[0] * len(nums) + for idx in range(1, len(dp)): + dp[idx] = max(dp[idx-2]+ nums[idx-1], dp[idx-1]) + print(dp) + return dp[-1] + + return max(dpf(nums[1:]),dpf(nums[:-1])) diff --git a/meeting-rooms-ii/Seoya0512.py b/meeting-rooms-ii/Seoya0512.py new file mode 100644 index 0000000000..cc2b0d47dc --- /dev/null +++ b/meeting-rooms-ii/Seoya0512.py @@ -0,0 +1,23 @@ +''' +Time Complexity: O(N log N) +- intervals.sort() 는 O(N log N) 소요 +- 힙 자료구조 삽입과 pop에 O(log N) 소요 + +Space Complexity: O(N) +- ends 배열에 최악의 경우 N개의 원소가 들어갈 수 있음 +''' +from typing import ( + List, +) +import heapq + +def min_meeting_rooms(intervals: List) -> int: + intervals.sort() + ends = [] + + for start,end in intervals: + if ends and ends[0] <= start: + heapq.heappop(ends) + heapq.heappush(ends,end) + + return len(ends)