Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions binary-tree-level-order-traversal/Seoya0512.py
Original file line number Diff line number Diff line change
@@ -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
20 changes: 20 additions & 0 deletions house-robber-ii/Seoya0512.py
Original file line number Diff line number Diff line change
@@ -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]))
23 changes: 23 additions & 0 deletions meeting-rooms-ii/Seoya0512.py
Original file line number Diff line number Diff line change
@@ -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)