소괄호 '(' , ')'로 구성된 문자열 s가 주어집니다. 이 때 괄호의 짝이 맞는지 판별하는 solution() 함수를 구현하세요. 열린 괄호는 자신과 가장 가까운 닫힌 괄호를 만나면 상쇄되며, 이때 반드시 열린 괄호가 닫힌 괄호보다 먼저 와야합니다.
이런 식으로 괄호를 없애는 과정을 반복했을 때, 남아있는 괄호가 없으면 짝이 맞다고 할 수 있습니다.
권장 시간: 30분
권장 시간 복잡도: O(N)
출제: 저자 출제
제약 조건
닫힌 괄호가 임의 위치의 열린 괄호와 상쇄되는 것이 아니라 닫힌 괄호가 나오기 바로 전 즉, 가장 가까운 (최근) 열린 괄호와 상쇄
'최근' 이라는 키워드를 보고 스택을 떠올리는 감각을 키우자
def solution(s):
stack = []
for c in s:
if c == "(":
stack.append(c)
elif c == ")":
if not stack:
return False
else:
stack.pop()
if stack:
return False
else:
return True