Skip to content

Commit ddd3676

Browse files
authored
Merge pull request #472 from haklee/main
[haklee] week 6
2 parents 5e24497 + 5e09250 commit ddd3676

File tree

4 files changed

+283
-0
lines changed

4 files changed

+283
-0
lines changed
+105
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
"""TC: O(n), SC: O(1)
2+
3+
์•„์ด๋””์–ด:
4+
๋†’์ด ๋ฆฌ์ŠคํŠธ l์ด ์ฃผ์–ด์กŒ๋‹ค๊ณ  ํ•˜์ž. ๊ทธ๋ฆฌ๊ณ  ์ด ์•ˆ์— ์žˆ๋Š” ์ตœ๋Œ€ ์ˆ˜์กฐ ๋ฉด์ ์„ f(l)์ด๋ผ๊ณ  ํ•˜์ž.
5+
6+
โ–ก โ–ก โ–ก
7+
โ–ก โ–ก โ–ก โ–ก
8+
โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก
9+
โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก
10+
โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก
11+
2,5,3,3,1,3,1,2,2,5,3,5,3,4
12+
^
13+
l
14+
15+
16+
๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ์ด ํ•ญ์ƒ ์„ฑ๋ฆฝํ•œ๋‹ค.
17+
18+
- l์˜ ์–‘ ๋์˜ ๊ฐ’ ์ค‘ ์ž‘์€ ๊ฐ’ x๊ฐ€ ์•ž์ชฝ์— ์žˆ์—ˆ๋‹ค๊ณ  ํ•ด๋ณด์ž. x๋ฅผ ๋บ€ ๋ฆฌ์ŠคํŠธ l`์„ ๋งŒ๋“ ๋‹ค.
19+
- ์ด๋•Œ ์ž‘์€ ๊ฐ’์ด ๋’ท์ชฝ์— ์žˆ์—ˆ์–ด๋„ ์ผ๋ฐ˜์„ฑ์„ ์žƒ์ง€ ์•Š๋Š”๋‹ค.
20+
21+
โ”‚โ–ก โ–ก โ–ก
22+
โ”‚โ–ก โ–ก โ–ก โ–ก
23+
โ”‚โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก
24+
โ–กโ”‚โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก
25+
โ–กโ”‚โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก
26+
2โ”‚5,3,3,1,3,1,2,2,5,3,5,3,4
27+
^ ^
28+
x l`
29+
30+
31+
- f(l)์€ ๊ทธ๋ ‡๋‹ค๋ฉด
32+
- f(l`)์ด๊ฑฐ๋‚˜(์ฆ‰, x๋ฅผ ์“ฐ์ง€ ์•Š์•˜๊ฑฐ๋‚˜)
33+
- x๋ฅผ ์จ์„œ ๋งŒ๋“  ์ˆ˜์กฐ ๋ฉด์  ์ค‘์— ์žˆ๋‹ค.
34+
35+
- ๊ทธ๋Ÿฐ๋ฐ x๋Š” l์˜ ์–‘ ๋ ๊ฐ’ ์ค‘์— ์ž‘์€ ๊ฐ’์ด๋ฏ€๋กœ, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ถ„์„์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
36+
1) x๋ฅผ ์จ์„œ ๋งŒ๋“œ๋Š” ์ˆ˜์กฐ์˜ ๋†’์ด๋Š” ์•„๋ฌด๋ฆฌ ๋†’์•„๋„ x๋‹ค. x๋ณด๋‹ค ์ž‘์•„์งˆ ์ˆ˜๋Š” ์žˆ์–ด๋„, x๋ณด๋‹ค ์ปค์งˆ ์ˆ˜๋Š” ์—†๋‹ค.
37+
2) x๋ฅผ ์จ์„œ ๋งŒ๋“œ๋Š” ์ˆ˜์กฐ์˜ ํญ์€ l์˜ ๋‹ค๋ฅธ์ชฝ ๋์— ์žˆ๋Š” ๋†’์ด๋ฅผ ์„ ํƒํ–ˆ์„๋•Œ ์ตœ๋Œ€๊ฐ€ ๋œ๋‹ค.
38+
- ๊ทธ๋Ÿฌ๋ฏ€๋กœ, x๋ฅผ ์จ์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ˆ˜์กฐ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋Š” l์˜ ๋‹ค๋ฅธ์ชฝ ๋์— ์žˆ๋Š” ๋†’์ด๋ฅผ ์„ ํƒํ•œ ๊ฒฝ์šฐ ๋‚˜์˜จ๋‹ค.
39+
40+
์œ„์˜ ๋‚ด์šฉ์„ ์•„๋ž˜์˜ ์„ค๋ช…์„ ํ†ตํ•ด ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
41+
42+
- ์–‘ ๋์„ ์„ ํƒํ•œ ๊ฒฝ์šฐ x๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ฉด์ ์ด๋‹ค.
43+
44+
โ”‚โ–ก โ–ก โ–ก
45+
โ”‚โ–ก โ–ก โ–ก โ–ก
46+
โ”‚โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก
47+
โ– โ”‚โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ– 
48+
โ– โ”‚โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ– 
49+
2โ”‚5,3,3,1,3,1,2,2,5,3,5,3,4
50+
^ ^
51+
52+
- x๋Š” ๊ทธ๋Œ€๋กœ ๋‘” ์ฑ„ ๋‹ค๋ฅธ์ชฝ ๋์„ ์•ˆ์ชฝ์œผ๋กœ ๋” ์ด๋™ํ•˜๋ฉด ์ˆ˜์กฐ ๋†’์ด๋Š” ๋™์ผํ•œ๋ฐ ํญ์€ ๋” ์ž‘์•„์ง„๋‹ค.
53+
54+
โ”‚โ–ก โ–ก โ–ก
55+
โ”‚โ–ก โ–ก โ–ก โ–ก
56+
โ”‚โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก
57+
โ– โ”‚โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–ก โ–ก
58+
โ– โ”‚โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–  โ–ก โ–ก
59+
2โ”‚5,3,3,1,3,1,2,2,5,3,5,3,4
60+
^ ^
61+
62+
- ์‹ฌ์ง€์–ด x๋ณด๋‹ค ์ž‘์€ ๋†’์ด ๊ฐ’์„ ์„ ํƒํ•œ ๊ฒฝ์šฐ ์ˆ˜์กฐ ๋†’์ด๋„ ์ž‘์•„์ง€๊ณ  ํญ๋„ ์ž‘์•„์ง€๋Š” ์ผ์ด ์ผ์–ด๋‚œ๋‹ค.
63+
64+
โ”‚โ–ก โ–ก โ–ก
65+
โ”‚โ–ก โ–ก โ–ก โ–ก
66+
โ”‚โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก
67+
โ–กโ”‚โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก
68+
โ– โ”‚โ–  โ–  โ–  โ–  โ–  โ–  โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก โ–ก
69+
2โ”‚5,3,3,1,3,1,2,2,5,3,5,3,4
70+
71+
72+
์ฆ‰, ์œ„์˜ ๋‚ด์šฉ์„ ์ข…ํ•ฉํ•˜๋ฉด ๋‹ค์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
73+
- f(l) = max( (l์˜ ์–‘ ๋ ๋†’์ด๋ฅผ ์„ ํƒํ•ด์„œ ๋งŒ๋“  ์ˆ˜์กฐ ๋„“์ด), f(l`) )
74+
- ๊ทธ๋Ÿฐ๋ฐ f(l`)๋„ f(l)์„ ๊ตฌํ•œ ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง„ l`์˜ ์–‘ ๋ ๋†’์ด ์ค‘
75+
์งง์€ ์ชฝ์„ ๋บ€ ๋ฆฌ์ŠคํŠธ l``์„ ๋งŒ๋“ค์–ด์„œ ์œ„์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋‹ค.
76+
- ์ฆ‰, f(l)์€ ์•„๋ž˜์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
77+
- l์˜ ์–‘ ๋ ๋†’์ด๋ฅผ ์จ์„œ ์ˆ˜์กฐ ๋„“์ด๋ฅผ ๊ตฌํ•˜๊ณ , ๊ธฐ์กด ์ตœ๋Œ€ ๋„“์ด์™€ ๋น„๊ตํ•˜์—ฌ ๋” ํฐ ๊ฐ’์„ ์ตœ๋Œ€ ๋„“์ด์— ๋Œ€์ž…ํ•œ๋‹ค.
78+
- l์—์„œ ์งง์€ ์ชฝ ๋†’์ด๋ฅผ ๋บ€๋‹ค.
79+
- ์œ„ ๊ณผ์ •์„ l์— ์•„์ดํ…œ์ด ํ•˜๋‚˜๋งŒ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต.
80+
81+
82+
SC:
83+
- ํˆฌ ํฌ์ธํ„ฐ๋ฅผ ์จ์„œ l์˜ ์‹œ์ž‘, ๋ ์ธ๋ฑ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด O(1).
84+
- ์ˆ˜์กฐ ์ตœ๋Œ€ ๋„“์ด๊ฐ’ ๊ด€๋ฆฌ, O(1).
85+
- ์ข…ํ•ฉํ•˜๋ฉด O(1).
86+
87+
TC:
88+
- ๋ฆฌ์ŠคํŠธ์˜ ์–‘ ๋ ๋†’์ด๋ฅผ ํ†ตํ•ด ๋ฉด์  ๊ตฌํ•˜๊ธฐ, O(1).
89+
- ํฌ์ธํ„ฐ ์ด๋™ O(1).
90+
- ํฌ์ธํ„ฐ ์ด๋™์‹œ ๋‘ ํฌ์ธํ„ฐ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๊ฐ€ 1์”ฉ ํ•ญ์ƒ ๊ฐ์†Œํ•˜๋ฏ€๋กœ ์œ„ ๊ณผ์ •์„ ์ตœ๋Œ€ n-2๋ฒˆ ๋ฐ˜๋ณต.
91+
- ์ข…ํ•ฉํ•˜๋ฉด O(n).
92+
"""
93+
94+
95+
class Solution:
96+
def maxArea(self, height: List[int]) -> int:
97+
max_area = -1
98+
s, e = 0, len(height) - 1
99+
while s < e:
100+
max_area = max(max_area, (e - s) * min(height[s], height[e]))
101+
if height[s] > height[e]:
102+
e -= 1
103+
else:
104+
s += 1
105+
return max_area
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
"""search์‹œ: TC: O(n), SC: O(n)
2+
3+
word์˜ max length๊ฐ€ w, `addWord`๋ฅผ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง„ ๋…ธ๋“œ ๊ฐœ์ˆ˜๊ฐ€ n๊ฐœ๋ผ๊ณ  ํ•˜์ž.
4+
5+
์•„์ด๋””์–ด:
6+
`implement-trie-prefix-tree` ๋ฌธ์ œ์—์„œ ๊ตฌํ˜„ํ•œ trie์—์„œ search ๋ถ€๋ถ„๋งŒ recursiveํ•œ dfs ๊ตฌํ˜„์œผ๋กœ ์ˆ˜์ •.
7+
8+
SC:
9+
- trie์˜ ๋…ธ๋“œ ๊ฐœ์ˆ˜ O(n).
10+
- dfs์‹œ ์Šคํƒ ๊นŠ์ด๋Š” ์ตœ๋Œ€ w. ์ฆ‰, O(w). ๊ทธ๋Ÿฐ๋ฐ ์Šคํƒ ๊นŠ์ด๋Š” ๋…ธ๋“œ ๊ฐœ์ˆ˜๋ณด๋‹ค ํด ์ˆ˜ ์—†๋‹ค. ์ฆ‰, O(w) < O(n).
11+
- ์ข…ํ•ฉํ•˜๋ฉด, O(n) + O(w) < O(n) + O(n) = O(n).
12+
13+
TC:
14+
- ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๋…ธ๋“œ ์ˆœํšŒ. O(n).
15+
16+
"""
17+
18+
19+
class WordDictionary:
20+
21+
def __init__(self):
22+
self.next: dict[str, WordDictionary] = {}
23+
self.end: bool = False
24+
25+
def addWord(self, word: str) -> None:
26+
cur = self
27+
28+
for c in word:
29+
cur.next[c] = cur.next.get(c, WordDictionary())
30+
cur = cur.next[c]
31+
32+
cur.end = True
33+
34+
def search(self, word: str) -> bool:
35+
cur = self
36+
37+
return self._search(cur, word, 0)
38+
39+
def _search(self, trie, word: str, ind: int) -> bool:
40+
if ind == len(word):
41+
return trie.end
42+
43+
c = word[ind]
44+
45+
if c == ".":
46+
return any(
47+
[self._search(node, word, ind + 1) for node in trie.next.values()]
48+
)
49+
50+
if c not in trie.next:
51+
return False
52+
53+
return self._search(trie.next[c], word, ind + 1)
54+
55+
56+
# Your WordDictionary object will be instantiated and called as such:
57+
# obj = WordDictionary()
58+
# obj.addWord(word)
59+
# param_2 = obj.search(word)

โ€Žspiral-matrix/haklee.py

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
"""search์‹œ: TC: O(m*n), SC: O(1)
2+
3+
์•„์ด๋””์–ด:
4+
2์ฐจ์› ๋ฐฐ์—ด์—์„œ ์•„์ง ํ›‘๊ณ  ๊ฐ€์ง€ ์•Š์€ ์˜์—ญ์„ โ†’, โ†“, โ†, โ†‘ ๋ฐฉํ–ฅ์œผ๋กœ ํ›‘๋Š”๋‹ค. ์ด๋•Œ, ํ•œ ๋ฒˆ์— ํ›‘๊ณ  ๊ฐˆ ์„ ์˜
5+
์‹œ์ž‘๊ณผ ๋ ์—ญํ• ์„ ํ•  ๊ฐ’๋“ค(์ฆ‰, boundary ๊ฐ’๋“ค)์„ ์ž˜ ๊ด€๋ฆฌํ•ด์ค€๋‹ค.
6+
- top, bottom, left, right์˜ ์—ญํ• ์„ ํ•  ๊ฐ’์„ ๊ฐ๊ฐ 0, m, 0, n์œผ๋กœ ์ดˆ๊ธฐํ™”.
7+
- โ†’ ๋ฐฉํ–ฅ์œผ๋กœ ํ›‘๊ณ  ๋‚˜์„œ top์„ ํ•œ ์นธ ์•„๋ž˜๋กœ(์ฆ‰, top++).
8+
- โ†“ ๋ฐฉํ–ฅ์œผ๋กœ ํ›‘๊ณ  ๋‚˜์„œ right๋ฅผ ํ•œ ์นธ ์™ผ์ชฝ์œผ๋กœ(์ฆ‰, right--).
9+
- โ† ๋ฐฉํ–ฅ์œผ๋กœ ํ›‘๊ณ  ๋‚˜์„œ bottom์„ ํ•œ ์นธ ์œ„๋กœ(์ฆ‰, bottom--).
10+
- โ†‘ ๋ฐฉํ–ฅ์œผ๋กœ ํ›‘๊ณ  ๋‚˜์„œ left๋ฅผ ํ•œ ์นธ ์˜ค๋ฅธ์ชฝ์œผ๋กœ(์ฆ‰, left++).
11+
- right๊ฐ€ left๋ณด๋‹ค ์™ผ์ชฝ์— ์žˆ๊ฑฐ๋‚˜ top์ด bottom๋ณด๋‹ค ์•„๋ž˜ ์žˆ์œผ๋ฉด ํƒ์ƒ‰ ์ข…๋ฃŒ.
12+
13+
SC:
14+
- boundary ๊ฐ’๋งŒ ๊ด€๋ฆฌ. O(1).
15+
16+
TC:
17+
- ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์•„์ดํ…œ์— ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ์”ฉ ์ ‘๊ทผ. O(m*n).
18+
- ์„ ์„ ํ•œ ๋ฒˆ ๊ธ‹๋Š” ๊ณผ์ •์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ์ด ์ด O(1)์ธ๋ฐ(์ฝ”๋“œ ์ฐธ์กฐ), ์ด๊ฒŒ ์•„๋ฌด๋ฆฌ ๋งŽ์•„๋„ O(m*n)์„ ๋„˜์ง€๋Š”
19+
๋ชปํ•œ๋‹ค. ํ•œ ์„ ์— ์ตœ์†Œ ํ•˜๋‚˜์˜ ๊ฐ’์€ ๋“ค์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ.
20+
- ์ข…ํ•ฉํ•˜๋ฉด O(m*n).
21+
22+
"""
23+
24+
25+
class Solution:
26+
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
27+
def read_line(start: tuple[int, int], end: tuple[int, int]) -> list[int]:
28+
if start[0] == end[0]:
29+
# column ๋ฐฉํ–ฅ
30+
s, e = sorted([start[1], end[1]]) # TC: O(1)
31+
line = range(s, e + 1)
32+
if start[1] > end[1]: # TC: O(1)
33+
line = reversed(line)
34+
return [matrix[i][start[0]] for i in line]
35+
else:
36+
# row ๋ฐฉํ–ฅ
37+
s, e = sorted([start[0], end[0]]) # TC: O(1)
38+
line = range(s, e + 1)
39+
if start[0] > end[0]: # TC: O(1)
40+
line = reversed(line)
41+
return [matrix[start[1]][i] for i in line]
42+
43+
top, bottom, left, right = 0, len(matrix) - 1, 0, len(matrix[0]) - 1
44+
sol = []
45+
while True:
46+
# ์œ„
47+
if right < left:
48+
break
49+
line = read_line((left, top), (right, top))
50+
sol += line
51+
top += 1 # TC: O(1)
52+
53+
# ์˜ค๋ฅธ์ชฝ
54+
if top > bottom:
55+
break
56+
line = read_line((right, top), (right, bottom))
57+
sol += line
58+
right -= 1 # TC: O(1)
59+
60+
# ์•„๋ž˜
61+
if right < left:
62+
break
63+
line = read_line((right, bottom), (left, bottom))
64+
sol += line
65+
bottom -= 1 # TC: O(1)
66+
67+
# ์™ผ์ชฝ
68+
if top > bottom:
69+
break
70+
line = read_line((left, bottom), (left, top))
71+
sol += line
72+
left += 1 # TC: O(1)
73+
74+
return sol

โ€Žvalid-parentheses/haklee.py

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
"""TC: O(n), SC: O(n)
2+
3+
๋ฌธ์ž์—ด ๊ธธ์ด n
4+
5+
์•„์ด๋””์–ด:
6+
- ๋ฌธ์ž์—ด์„ ์•ž์—์„œ๋ถ€ํ„ฐ ํ›‘์œผ๋ฉด์„œ
7+
- ๊ด„ํ˜ธ ์‹œ์ž‘์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ์Šคํƒ์— ๋„ฃ๋Š”๋‹ค.
8+
- ๊ด„ํ˜ธ ๋์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ์Šคํƒ์˜ ์ œ์ผ ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” ์•„์ดํ…œ์„ popํ•ด์„œ ๋งค์นญ์ด ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
9+
- ์ด๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ˆ์™ธ ์ƒํ™ฉ๋“ค์„ ์กฐ์‹ฌํ•œ๋‹ค.
10+
- ์Šคํƒ์— ์•„์ดํ…œ์ด ํ•˜๋‚˜๋„ ์—†๋Š”๋ฐ pop์„ ํ•˜๋ ค๋Š” ์ƒํ™ฉ ๋ฐฉ์ง€.
11+
- e.g.) "))))"
12+
- ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ํ›‘๊ณ  ์ง€๋‚˜๊ฐ”๋Š”๋ฐ ์Šคํƒ์— ์•„์ดํ…œ์ด ๋‚จ์•„์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์‹คํŒจ๋‹ค.
13+
- e.g.) "(((("
14+
15+
SC:
16+
- ์‹œ์ž‘ ๊ด„ํ˜ธ ๋ฆฌ์ŠคํŠธ O(1).
17+
- ๋ ๊ด„ํ˜ธ์™€ ๋งค์นญ๋˜๋Š” ์‹œ์ž‘ ๊ด„ํ˜ธ dict O(1).
18+
- ์‹œ์ž‘ ๊ด„ํ˜ธ๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ ์Šคํƒ์— ์Œ“์ด๋Š” ์•„์ดํ…œ์€ ์ด n๊ฐœ๋‹ค. O(n).
19+
- ์ข…ํ•ฉํ•˜๋ฉด O(n).
20+
21+
TC:
22+
- ๋ฌธ์ž ์ด n๊ฐœ์— ๋Œ€ํ•ด ์•„๋ž˜๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค.
23+
- ์‹œ์ž‘ ๊ด„ํ˜ธ์ธ์ง€ ์ฒดํฌ. O(1).
24+
- ์‹œ์ž‘ ๊ด„ํ˜ธ์ธ ๊ฒฝ์šฐ ์Šคํƒ์— ์Œ“๊ธฐ O(1).
25+
- ๋ ๊ด„ํ˜ธ์ธ ๊ฒฝ์šฐ ์Šคํƒ์—์„œ popํ• ๋•Œ O(1), ๊ด„ํ˜ธ ๋งค์นญ ์ฒดํฌ์‹œ O(1).
26+
- ์ข…ํ•ฉํ•˜๋ฉด O(n).
27+
"""
28+
29+
30+
class Solution:
31+
def isValid(self, s: str) -> bool:
32+
stack = []
33+
openings = ["(", "{", "["]
34+
ending_match = {
35+
")": "(",
36+
"}": "{",
37+
"]": "[",
38+
}
39+
for c in s:
40+
if c in openings:
41+
stack.append(c)
42+
else:
43+
if not stack or ending_match[c] != stack.pop():
44+
return False
45+
return False if stack else True

0 commit comments

Comments
ย (0)