[프로그래머스] 스택/큐 - 올바른 괄호(Python3)

kimgaeul02·2023년 1월 5일

프로그래머스

목록 보기
3/11

💻 함수

def solution(s):
    answer = True
    cnt = 0
    
    if s[0] == ')':
        # 잘못된 경우
        return False
    
    for t in s:
        if cnt == 0 and t == ')':
            return False
        if t == '(':
            # 열면서 +1
            cnt += 1
        if t == ')':
            # 닫으면서 -1
            cnt -= 1
    if cnt != 0:
        return False
 
    return True

👨🏻‍💻 아쉬운 점

다른 문제처럼 deque를 사용하고 싶었으나 구현이 어려워 무난한 방법으로 풀었습니다. 사이트에서 찾은 코드 중 가장 인상 깊었던 것 올려둡니다.

from collections import deque

def solution(s):
    s_dq = deque(s)
    stack = []
    r = True
    
    while s_dq:
        tmp = s_dq.popleft()
        if tmp == '(':
            stack.append(tmp)
        elif tmp == ')'and stack and stack[-1] == '(': # stack이 비어있지 않고 마지막 요소가 (인 경우
                stack.pop()
        else: r = False
        
    if stack: # stack이 비어있지 않다면
        return False
    else: return r # stack이 비어있지만 )()인 경우 false, stack이 비어있는 경우 true

0개의 댓글