스택이나 큐를 이용하여 문제를 쉽게 해결할 수 있다! 입력된 문자열을 하나씩 for문을 돌면서 1. "("인 경우, push 2. ")"인 경우, pop 만약 스택이나 큐가 비워져있어서 pop이 불가능하다면, False for문이 모두 돌고 나서 스택이나 큐에 원소가 남아있는 경우도 False이다.
defsolution(s):
stack = []
for i in s:
if i == "(":
stack.append("(")
else:
iflen(stack) != 0:
stack.pop()
else:
returnFalseiflen(stack) != 0:
returnFalseelse:
returnTrue
from collections import deque
defsolution(s):
queue = deque()
for i in s:
if i == "(":
queue.append("(")
else:
iflen(queue) != 0:
queue.pop()
else:
returnFalseiflen(queue) != 0:
returnFalseelse:
returnTrue
파이썬에서의 deque는 popleft / pop - appendleft / append로 메서드를 활용할 수 있어 스택이나 큐에서도 쉽게 활용이 가능하다. 위에서의 코드는 자료구조 큐를 이용한 풀이이다. 첫 번째 코드도 deque를 활용하여 스택으로 풀이가 가능하다.