본문 바로가기

코딩테스트/Python

[프로그래머스] 올바른 괄호

내 코드

def solution(s):

    a = []
    
    for i in s:
        if i == "(":
            a.append(i)
        else:
            if len(a) != 0:
                a.pop(len(a)-1)
            else:
                return False
    
    return False if len(a)!=0 else True

s 문자열을 탐색하면서 "("이 나왔으면 s에 추가한다. ")"이 나왔으면 앞에 "(" 이 무조건 있어야하기때문에 a에 넣어둔 "(" 이 있는지 확인한다. 이때 a에는 ")"이 들어갈수는 없기 때문에 길이만 체크해주면된다. 길이가 0이 아니면 "("이 존재한다는 뜻이므로 a의 마지막을 pop해준다. 길이가 0이면 "(" 이 존재하지 않는데 ")" 나왔다는 뜻이므로 False를 반환한다.

만약 s문자열을 다 돌았을경우 a에 남아있는 "("이 있으면 False 없으면 True를 반환한다.

 

다른사람 코드에서 마지막 부분을 return len(a)==0 이런식으로 반환한 코드도 있었다!