Skip to content

Commit 6d14b8d

Browse files
authored
Merge pull request #1041 from thispath98/main
[thispath98] Week 11
2 parents 42d3c39 + 269516b commit 6d14b8d

File tree

3 files changed

+86
-0
lines changed

3 files changed

+86
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution:
2+
def maxDepth(self, root: Optional[TreeNode]) -> int:
3+
"""
4+
Intuition:
5+
์™ผ์ชฝ ์ž์‹๊ณผ ์˜ค๋ฅธ์ชฝ ์ž์‹์— ๋Œ€ํ•ด depth๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ ์žฌ๊ท€ํ•˜๊ณ ,
6+
๋‘˜ ์ค‘ ํฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
7+
8+
Time Complexity:
9+
O(N):
10+
๋ชจ๋“  ๋…ธ๋“œ์— ๋Œ€ํ•ด ์žฌ๊ท€์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๋ฏ€๋กœ O(N)์ด๋‹ค.
11+
12+
Space Complexity:
13+
O(h):
14+
ํŠธ๋ฆฌ์˜ ๋†’์ด h๋งŒํผ ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฏ€๋กœ,
15+
๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” O(h)์ด๋‹ค.
16+
"""
17+
18+
def get_depth(node, depth):
19+
if not node:
20+
return depth
21+
22+
left = get_depth(node.left, depth + 1)
23+
right = get_depth(node.right, depth + 1)
24+
return max(left, right)
25+
26+
answer = get_depth(root, 0)
27+
return answer

โ€Žmerge-intervals/thispath98.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution:
2+
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
3+
"""
4+
Intuition:
5+
์ •๋ ฌ๋œ intervals์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์ด์ „์˜ ์ธํ„ฐ๋ฒŒ๊ณผ ํ˜„์žฌ ์ธํ„ฐ๋ฒŒ์ด
6+
๊ฒน์นœ๋‹ค๋ฉด, ์ด๋ฅผ ๊ฐฑ์‹ ํ•ด์ค€๋‹ค.
7+
๊ฒน์น˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ƒˆ๋กœ์šด ์ธํ„ฐ๋ฒŒ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
8+
9+
Time Complexity:
10+
O(N log N):
11+
์ตœ์ดˆ์— ์ •๋ ฌ์„ ํ•˜๋ฏ€๋กœ, O(N log N)์ด๋‹ค.
12+
์ดํ›„ ํ•œ๋ฒˆ ์Šค์บ”์„ ํ•˜๋ฏ€๋กœ O(N)์ด๋‹ค.
13+
๋”ฐ๋ผ์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N log N)์ด๋‹ค.
14+
15+
Space Complexity:
16+
O(N):
17+
answer์— N๊ฐœ์˜ ๊ฐ’์„ ์ €์žฅํ•˜๋ฏ€๋กœ O(N)์ด๋‹ค.
18+
"""
19+
sorted_intervals = sorted(intervals)
20+
21+
answer = [sorted_intervals[0]]
22+
for start, end in sorted_intervals[1:]:
23+
prev_start, prev_end = answer[-1]
24+
if prev_end >= start:
25+
answer[-1][1] = max(prev_end, end)
26+
else:
27+
answer.append([start, end])
28+
return answer

โ€Žreorder-list/thispath98.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class Solution:
2+
def reorderList(self, head: Optional[ListNode]) -> None:
3+
"""
4+
Intuition:
5+
nodes ๋ฆฌ์ŠคํŠธ์— ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ €์žฅํ•œ๋‹ค.
6+
ํ˜„์žฌ ๋…ธ๋“œ๊ฐ€ -i - 1๋ฒˆ์งธ ๋…ธ๋“œ์ผ ๋•Œ,
7+
ํ˜„์žฌ ๋…ธ๋“œ์˜ next๋Š” head์˜ next๋กœ ์„ค์ •ํ•˜๊ณ ,
8+
head์˜ next๋Š” ํ˜„์žฌ ๋…ธ๋“œ๋กœ ์„ค์ •ํ•œ๋‹ค.
9+
์ดํ›„ ๋งˆ์ง€๋ง‰์— ์ค‘๊ฐ„์— ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ None์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
10+
11+
Time Complexity:
12+
O(N):
13+
๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•˜๋ฏ€๋กœ O(N)์ด๋‹ค.
14+
15+
Space Complexity:
16+
O(N):
17+
๋ชจ๋“  ๋…ธ๋“œ๋ฅผ nodes ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•˜๋ฏ€๋กœ O(N)์ด๋‹ค.
18+
"""
19+
nodes = []
20+
node = head
21+
while node:
22+
nodes.append(node)
23+
node = node.next
24+
25+
for i in range((len(nodes) - 1) // 2):
26+
cur = nodes[-i - 1]
27+
cur.next = head.next
28+
head.next = cur
29+
head = cur.next
30+
31+
nodes[len(nodes) // 2].next = None

0 commit comments

Comments
ย (0)