괄호의 짝과 순서가 맞는지 판별하는 문제인데 이 문제는 학교 자료구조 수업에서 한번 다뤘었기 때문에 보자마자 바로 풀었다. 역시 학교 수업을 열심히 들어야 한다.
def solution(s):
stack = list()
for i in s:
if i == "(":
stack.append(i)
elif i == ")":
if len(stack) == 0:
return False
stack.pop()
if len(stack) != 0:
return False
return True
반복문으로 먼저 "("를 만나면 스택(파이썬에는 스택이 따로 존재 하지 않지만 편의상 스택이라고 부르겠다.)에 저장한다. 그리고 ")"을 만나면 스택에서 "(" 하나를 pop하는데 스택이 비어 있는데 pop하려고 하거나 반복문이 종료되고나서 스택이 비어있지 않다면 False를 반환해주고 아니라면 True를 반환해준다.