s는 여러 괄호들로 이루어진 String 인자입니다.
s가 유효한 표현인지 아닌지 true/false로 반환해주세요.
종류는 '(', ')', '[', ']', '{', '}' 으로 총 6개 있습니다. 아래의 경우 유효합니다.
한 번 괄호를 시작했으면, 같은 괄호로 끝내야 한다.
괄호 순서가 맞아야 한다.
예를 들어 아래와 같습니다.
s = "()"
return true
s = "()[]{}"
return true
s = "(]"
return false
s = "([)]"
return false
s = "{[]}"
return true
사실 이번 문제는 예전에 한번 스택을 공부할때 엄청 삽질하며 풀어봤던 유형의 문제라 이번에는 비교적 간단히 풀이를 할 수 있었습니다
def is_valid(string):
list = []
for i in string:
if len(list) == 0:
list.append(i)
else:
if list[len(list) - 1] == '(' and i == ')':
list.pop()
continue;
if list[len(list) - 1] == '[' and i == ']':
list.pop()
continue;
if list[len(list) - 1] == '{' and i == '}':
list.pop()
continue;
list.append(i)
if len(list) > 0: return False
else: return True
print(is_valid('{[]}'))