https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=python3
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
s | answer |
---|---|
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
주어진 s를 for문으로 돌면서 "("이면 stack에 추가, ")"이면 stack에서 pop 하는데 이 때 False가 될 수 있는 경우를 제외해주어야 한다.
False가 될 수 있는 경우는
1. stack이 비어있는데 pop하려는 경우 (예를 들어 여는 괄호가 2개인데 3번 닫아버린 경우)
2. for문이 끝났을 때 stack이 비어 있지 않은 경우 (여는 괄호가 3개인데 2번 닫아버린 경우)
가 있으므로 이 두가지 경우에는 answer을 False로 바꿔주면 된다!
def solution(s):
answer = True
stack = []
for ss in s:
if ss == "(":
stack.append(ss)
else:
if len(stack) == 0:
answer = False
break
else:
stack.pop()
if len(stack) != 0:
answer = False
return answer