📍문제
s는 여러 괄호들로 이루어진 String 인자입니다. s가 유효한 표현인지 아닌지 true/false로 반환해주세요.
종류: '(', ')', '[', ']', '{', '}'
한 번 괄호를 시작했으면, 같은 괄호로 끝내야 한다.
s | return |
---|---|
"()" | True |
"()[]{}" | True |
"(]" | False |
"([)]" | False |
def is_valid(string):
a = {')':'(',']':'[','}':'{'}
b = []
for i in string:
if i in a: #i가 ) , ] , } 중 하나일때
if b[-1:]==[a[i]]: #리스트 b 역정렬순으로 비교하여 a의 닫는 괄호를 만나면
b.pop() #리스트 b에서 빼기
else: #못 만나면
return False
else:
b.append(i) #i가 ( , [ , { 중 하나일때 b에 append
if b==[]: # 짝을 만나서 전부 pop되어 리스트 b가 빈배열일 경우
return True
return False # 짝을 못 만나서 남아있으면 False