본문 바로가기

알고리즘

프로그래머스/올바른 괄호/py

https://school.programmers.co.kr/learn/courses/30/lessons/12909

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제


괄호가 '(' 문자로 열려있으면 반드시 ')' 로 닫혀있는 짝이있는 문자열 일때 올바른 문자열인지 아닌지 구분하는 함수를 완성하여라

입력


문자열 s 의 길이 (1 <= len(s) <= 100000)

출력


true 또는 false

 

풀이


( 일때 큐로 스택에 넣어주고 )일때 스택을 팝해준다. 마지막 에서 배열의 길이가 0이되면 올바른 문자열이다.

 

def solution(s):
    answer = False
    q = []
    for i in s:
        if i == '(':
            q.append(i) # ( 일경우 스택을 넣는다.
        else:
            if len(q) == 0: # 스택을 팝하기전에 길이가 이미 0이면 false
                return False
            elif q[-1] != '(': # 스택 맨 마지막 즉뺄값이 ( 아니면 false
                return False
            q.pop() # 스택을 팝한다.
    if len(q) == 0: # 리스트의 길이가 0이면 True 를 리턴한다.
        answer = True
    return answer