catbook 종원's 블로그 이사 온 블로그

프로그래머스Lv2_올바른괄호

» Algorithm

문제

괄호의 쌍이 올바르게 짝지어져 있다면 True, 아니면 False를 출력하여라.

ex)
()() ->True

(()( -> False






접근법

빈 배열 temp를 생성하여 s를 순회하면서 ‘(‘ 이면 temp에 삽입, ‘(‘ 다음 ‘)’ 이면 괄호 쌍이 만들어지므로 temp에서 pop ‘(‘ 가 나오지 않았는데 ‘)’ 가 나왔다면 괄호 쌍이 맞지않는 것이므로 False. 순회를 마친후 temp가 비어있다면 괄호쌍이 올바른 것이므로 True.




코드

def solution(s):
    # if s == "":
    #     return False
    temp = []
    for i in s:
        if i == '(':
            temp.append('(')
        else:
            if temp == []:
                return False
            temp.pop()
    return temp == []






다른사람풀이

def is_pair(s):
    x = 0
    for w in s:
        if x < 0:
            break
        x = x+1 if w=="(" else x-1 if w==")" else x
    return x==0