Skip to content

Commit 94d448b

Browse files
committed
feat: Add Solution to Valid Parentheses #222
- ์Šคํƒ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ด„ํ˜ธ ์œ ํšจ ๊ฒ€์‚ฌ ๋ฌธ์ œ ํ•ด๊ฒฐ (LeetCode 20, #222) - `Stack` ํด๋ž˜์Šค์™€ ๋‚ด๋ถ€ ํ—ฌํผ ๋ฉ”์„œ๋“œ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž‘์„ฑ - ์—ฌ๋Š” ๊ด„ํ˜ธ๋Š” push, ๋‹ซ๋Š” ๊ด„ํ˜ธ๋Š” popํ•˜์—ฌ ๋งค์นญ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ์‹์œผ๋กœ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•จ
1 parent fcf21f7 commit 94d448b

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
class Stack:
2+
def __init__(self):
3+
self.data = []
4+
5+
def is_empty(self):
6+
return len(self.data) == 0
7+
8+
def push(self, element):
9+
self.data.append(element)
10+
11+
def pop(self):
12+
if not self.is_empty():
13+
return self.data.pop()
14+
else:
15+
return None
16+
17+
def peek(self):
18+
if not self.is_empty():
19+
return self.data[-1]
20+
else:
21+
return None
22+
# <<<--- Stack ๊ตฌํ˜„ ---<<<
23+
# >>>--- ๋‹ต์•ˆ Solution --->>>
24+
class Solution:
25+
# ์Šคํƒ์„ ํ™œ์šฉํ•ด ๊ด„ํ˜ธ ์œ ํšจ ๊ฒ€์‚ฌ
26+
# Time Complexity: O(n)
27+
# Space Complexity: O(n)
28+
def __init__(self):
29+
self._opening_brackets = '([{'
30+
self._closing_brackets = ')]}'
31+
self._matching_map = {')': '(', ']': '[', '}': '{'}
32+
33+
def isValid(self, s: str) -> bool:
34+
stack = Stack()
35+
for char in s:
36+
# ์—ฌ๋Š” ๊ด„ํ˜ธ๋ผ๋ฉด ์Šคํƒ์— push
37+
if self._is_opening(char):
38+
stack.push(char)
39+
# ๋‹ซ๋Š” ๊ด„ํ˜ธ๋ผ๋ฉด
40+
# ๋งˆ์ง€๋ง‰ ์—ด๋ฆฐ ๊ด„ํ˜ธ์™€ ์œ ํ˜• ์ผ์น˜ ํ™•์ธ
41+
elif self._is_closing(char):
42+
if stack.is_empty():
43+
# ์Šคํƒ์ด ๋น„์–ด ์žˆ์œผ๋ฉด False ๋ฐ˜ํ™˜
44+
return False
45+
last_open_bracket = stack.pop()
46+
if not self._is_match(last_open_bracket, char):
47+
return False
48+
return stack.is_empty()
49+
50+
def _is_opening(self, char: str) -> bool:
51+
return char in self._opening_brackets
52+
53+
def _is_closing(self, char: str) -> bool:
54+
return char in self._closing_brackets
55+
56+
def _is_match(self, open_bracket: str, close_bracket: str) -> bool:
57+
return self._matching_map.get(close_bracket) == open_bracket

0 commit comments

Comments
ย (0)