Skip to content

Commit 6e7633d

Browse files
authored
Merge pull request #1661 from KwonNayeon/main
2 parents 69dbd75 + d17e578 commit 6e7633d

File tree

4 files changed

+84
-28
lines changed

4 files changed

+84
-28
lines changed

โ€Žbinary-tree-level-order-traversal/KwonNayeon.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@
1010
- ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ๋Š” ๋ชจ๋“  ๋…ธ๋“œ์˜ ๊ฐ’์„ ์ €์žฅํ•จ
1111
1212
ํ’€์ด๋ฐฉ๋ฒ•:
13-
1. queue์™€ BFS๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ ˆ๋ฒจ ์ˆœ์„œ๋กœ ๋…ธ๋“œ๋ฅผ ์ˆœํšŒ
14-
2. ๊ฐ ๋ ˆ๋ฒจ์˜ ๋…ธ๋“œ๋“ค์„ ๋ณ„๋„์˜ ๋ฆฌ์ŠคํŠธ๋กœ ๋ชจ์•„์„œ ๊ฒฐ๊ณผ์— ์ถ”๊ฐ€
15-
3. ๊ฐ ๋…ธ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๊ทธ ๋…ธ๋“œ์˜ ์ž์‹๋“ค์„ ํ์— ์ถ”๊ฐ€ํ•˜์—ฌ ๋‹ค์Œ ๋ ˆ๋ฒจ๋กœ ๋„˜์–ด๊ฐ
13+
1. ๋ฃจํŠธ๊ฐ€ ์—†์œผ๋ฉด ๋นˆ ๋ฆฌ์ŠคํŠธ ๋ฐ˜ํ™˜
14+
2. ํ์— ๋ฃจํŠธ ๋„ฃ๊ธฐ
15+
3. while ํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€:
16+
- ํ˜„์žฌ ๋ ˆ๋ฒจ์˜ ๋…ธ๋“œ ๊ฐœ์ˆ˜ ์ €์žฅ
17+
- ๊ทธ ๊ฐœ์ˆ˜๋งŒํผ ๋…ธ๋“œ๋ฅผ ๊บผ๋ƒ„
18+
- ๋…ธ๋“œ์˜ ๊ฐ’ ์ €์žฅ
19+
- ์ž์‹์ด ์žˆ์œผ๋ฉด ํ์— ์ถ”๊ฐ€
20+
- ๊ฒฐ๊ณผ์— ํ˜„์žฌ ๋ ˆ๋ฒจ์„ ์ถ”๊ฐ€
1621
"""
1722
# Definition for a binary tree node.
1823
# class TreeNode:
@@ -44,3 +49,4 @@ def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
4449
result.append(current_level)
4550

4651
return result
52+

โ€Žconstruct-binary-tree-from-preorder-and-inorder-traversal/KwonNayeon.py

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,36 @@
11
"""
22
Constraints:
3-
1. 1 <= preorder.length <= 3000
4-
2. inorder.length == preorder.length
5-
3. -3000 <= preorder[i], inorder[i] <= 3000
6-
4. preorder and inorder consist of unique values
7-
5. Each value of inorder also appears in preorder
8-
6. preorder is guaranteed to be the preorder traversal of the tree
9-
7. inorder is guaranteed to be the inorder traversal of the tree
3+
1. 1 <= preorder.length <= 3000
4+
2. inorder.length == preorder.length
5+
3. -3000 <= preorder[i], inorder[i] <= 3000
6+
4. preorder and inorder consist of unique values
7+
5. Each value of inorder also appears in preorder
8+
6. preorder is guaranteed to be the preorder traversal of the tree
9+
7. inorder is guaranteed to be the inorder traversal of the tree
1010
11-
Time Complexity:
12-
- O(N^2). ๊ฐ ๋…ธ๋“œ(N)๋งˆ๋‹ค inorder์—์„œ index๋ฅผ ์ฐพ๋Š” ์—ฐ์‚ฐ(N)์ด ํ•„์š”ํ•˜๊ณ , ๊ฐ ๋…ธ๋“œ๋ฅผ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•˜์—ฌ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ.
13-
Space Complexity:
14-
- O(N). ์žฌ๊ท€ ํ˜ธ์ถœ ์Šคํƒ์„ ์œ„ํ•œ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋ฉฐ, ์ตœ์•…์˜ ๊ฒฝ์šฐ(ํ•œ์ชฝ์œผ๋กœ ์น˜์šฐ์นœ ํŠธ๋ฆฌ) ์žฌ๊ท€ ๊นŠ์ด๊ฐ€ N๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ.
15-
"""
11+
Time Complexity: O(N^2)
12+
- ๊ฐ ๋…ธ๋“œ(N)๋งˆ๋‹ค inorder์—์„œ index๋ฅผ ์ฐพ๋Š” ์—ฐ์‚ฐ(N)์ด ํ•„์š”ํ•˜๊ณ , ๊ฐ ๋…ธ๋“œ๋ฅผ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•˜์—ฌ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ.
13+
Space Complexity: O(N)
14+
- ์žฌ๊ท€ ํ˜ธ์ถœ ์Šคํƒ์„ ์œ„ํ•œ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋ฉฐ, ์ตœ์•…์˜ ๊ฒฝ์šฐ(ํ•œ์ชฝ์œผ๋กœ ์น˜์šฐ์นœ ํŠธ๋ฆฌ) ์žฌ๊ท€ ๊นŠ์ด๊ฐ€ N๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ.
15+
16+
์•„์ด๋””์–ด:
17+
- preorder: ๋ฃจํŠธ์˜ ์œ„์น˜๋ฅผ ์•Œ๋ ค์คŒ
18+
- inorder: ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ๊ตฌ๋ถ„ํ•ด์คŒ
1619
20+
ํ’€์ด๋ฐฉ๋ฒ•:
21+
1. ๋นˆ ๋ฐฐ์—ด์ผ ๋•Œ None ๋ฐ˜ํ™˜
22+
2. root, mid ๋ณ€์ˆ˜ ์ƒ์„ฑ (mid - ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ๊ฒฝ๊ณ„)
23+
3. ์žฌ๊ท€๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์„œ๋ธŒํŠธ๋ฆฌ ๋ถ„ํ• 
24+
25+
์˜ˆ์‹œ:
26+
- Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
27+
"""
28+
# Definition for a binary tree node.
29+
# class TreeNode:
30+
# def __init__(self, val=0, left=None, right=None):
31+
# self.val = val
32+
# self.left = left
33+
# self.right = right
1734
class Solution:
1835
def buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]:
1936
if not preorder or not inorder:

โ€Žlongest-palindromic-substring/KwonNayeon.py

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,15 @@
33
- 1 <= s.length <= 1000
44
- s consist of only digits and English letters.
55
6+
<Solution 1: Brute force>
7+
- ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘๊ฐ’๊ณผ ๋๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ๊ฐ€์žฅ ๊ธด ํŒฐ๋ฆฐ๋“œ๋กฌ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ์‹
8+
69
Time Complexity: O(n^3)
710
- ๋ชจ๋“  ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๊ตฌํ•  ๋•Œ O(n^2)
811
- ๊ฐ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์ด ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ์ง€๋ฅผ ์•Œ์•„๋‚ผ ๋•Œ O(n)
912
1013
Space Complexity: O(1)
11-
12-
Note:
13-
- ๋” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ• ์ƒ๊ฐํ•ด๋ณด๊ธฐ/์ฐพ์•„๋ณด๊ธฐ
1414
"""
15-
# Solution 1: Brute force
16-
# ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘๊ฐ’๊ณผ ๋๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ๊ฐ€์žฅ ๊ธด ํŒฐ๋ฆฐ๋“œ๋กฌ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ์‹
1715
class Solution:
1816
def longestPalindrome(self, s: str) -> str:
1917
longest_palindrome = ""
@@ -29,3 +27,42 @@ def longestPalindrome(self, s: str) -> str:
2927
longest_palindrome = substr
3028

3129
return longest_palindrome
30+
31+
"""
32+
<Solution 2: ํˆฌ ํฌ์ธํ„ฐ ๋ฐฉ๋ฒ•>
33+
- ํˆฌ ํฌ์ธํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ค‘์‹ฌ์—์„œ๋ถ€ํ„ฐ ํŒฐ๋ฆฐ๋“œ๋กฌ ์—ฌ๋ถ€ ์ฒดํฌ
34+
35+
Time Complexity: O(n^2)
36+
- ๋ฉ”์ธ ๋ฃจํ”„: O(n) - ๊ฐ ์œ„์น˜ i์— ๋Œ€ํ•ด ๋ฐ˜๋ณต
37+
- ๊ฐ ๋ฃจํ”„์—์„œ expandAroundCenter ํ˜ธ์ถœ: ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n) - ์ „์ฒด ๋ฌธ์ž์—ด๊นŒ์ง€ ํ™•์žฅ ๊ฐ€๋Šฅ
38+
39+
Space Complexity: O(1)
40+
- ์ถ”๊ฐ€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
41+
"""
42+
class Solution:
43+
def longestPalindrome(self, s: str) -> str:
44+
if not s:
45+
return ""
46+
47+
start = 0
48+
max_len = 1
49+
50+
for i in range(len(s)):
51+
52+
len1 = self.expandAroundCenter(s, i, i)
53+
len2 = self.expandAroundCenter(s, i, i+1)
54+
55+
current_max = max(len1, len2)
56+
57+
if current_max > max_len:
58+
max_len = current_max
59+
start = i - (current_max - 1) // 2
60+
61+
return s[start:start + max_len]
62+
63+
def expandAroundCenter(self, s, left, right):
64+
while left >= 0 and right < len(s) and s[left] == s[right]:
65+
left -= 1
66+
right += 1
67+
68+
return right - left - 1

โ€Žsubtree-of-another-tree/KwonNayeon.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,11 @@
1414
1515
ํ’€์ด๋ฐฉ๋ฒ•:
1616
1. Base case:
17-
- subRoot๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ True
17+
- subRoot๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ True (๋นˆ ํŠธ๋ฆฌ๋Š” ๋ชจ๋“  ํŠธ๋ฆฌ์˜ ์„œ๋ธŒํŠธ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ)
1818
- root๊ฐ€ ๋นˆ ํŠธ๋ฆฌ์ด๊ณ , subRoot๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ False
19-
2. ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ ๋™์ผํ•œ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ์žฌ๊ท€ ํ•จ์ˆ˜ ํ™œ์šฉ:
20-
- isSameTree()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ํŠธ๋ฆฌ๊ฐ€ ๋™์ผํ•œ์ง€ ํŒ๋‹จ
21-
- ํ˜„์žฌ ๋…ธ๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด subRoot์™€ ๊ฐ™์€์ง€ ํ™•์ธ
22-
- ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ๋‹ค์‹œ ๊ฒ€์‚ฌํ•จ
23-
3. ์žฌ๊ท€์ ์œผ๋กœ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰
24-
- ํ˜„์žฌ ๋…ธ๋“œ์—์„œ ์‹œ์ž‘ํ•˜๋Š” ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ subRoot์™€ ๊ฐ™๋‹ค๋ฉด True
25-
- ์•„๋‹ˆ๋ผ๋ฉด ์™ผ์ชฝ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ๊ณ„์† ํƒ์ƒ‰
19+
2. ๋‘ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„์–ด ์ฒ˜๋ฆฌ:
20+
- isSameTree(): ๋‘ ํŠธ๋ฆฌ๊ฐ€ ๋™์ผํ•œ์ง€ ๋น„๊ต
21+
- isSubtree(): ํ˜„์žฌ ๋…ธ๋“œ๊ฐ€ ์•ˆ ๋งž์œผ๋ฉด ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์—์„œ ์žฌ๊ท€ ํƒ์ƒ‰
2622
"""
2723
# Definition for a binary tree node.
2824
# class TreeNode:

0 commit comments

Comments
ย (0)