"""
괄호들로 구성된 문자열이 주어짐
닫힌 형태로 구성되있으면 true 아니면 false
닫힌 형태 () ([]) ()[]{}
왼쪽괄호가 먼저 나오고 오른쪽 괄호가 나오는데
둘이 짝이 맞지 않으면 false
애초에 s 길이가 2보다 작으면 false
왼쪽 괄호와 오른쪽 괄호를 비교를 해야하는데
왼쪽 괄호들을 stack 에 저장해놨다가 pop 을해서 오른쪽 괄호에 해당하는 문자와 쌍인지 확인
오른쪽 괄호에 해당하는 괄호들을 dictionary 에 넣어놓고
s 문자열 전체를 반복해서 char 왼쪽 괄호면 stack 에 넣고 오른쪽 괄호면 stack 에 넣어놨던 왼쪽괄호와
쌍인지 확인, 일치하지 않으면 false
오른쪽 괄호와 비교할 왼쪽 괄호가 stack 에 없으면 false
"""
class Solution:
def isValid(self, s: str) -> bool:
bracket = {")": "(", "]": "[", "}": "{"}
stack = []
if len(s) < 2:
return False
for char in s:
if char not in bracket:
stack.append(char)
elif not stack or stack.pop() != bracket[char]:
return False
return len(stack) == 0