[스택/큐] 올바른 괄호 (프로그래머스, Level 2)

Soorim Yoon·2022년 9월 15일
0

문제

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

  • 괄호 ()가 바르게 짝지어져야 한다.
  • 괄호가 바르게 짝지어진다는 의미는 '(' 문자로 열었으면 ')' 문자로 닫아야하고, 열고 닫는 괄호의 개수가 일치해야 한다.

참고로 이 문제는 취준을 시작하고 처음으로 봤던 코테에서 나왔던 문제와 유사하다. 그래서 더 기억에 남는 듯 하다 😎 (실제 코테 때는 이 문제보다 요구 조건이 더 복잡하긴 했다.)

풀이

  • s 배열에서 '(' 괄호를 만나면 stack에 append, ')' 괄호를 만나면 pop하는 형식으로 진행했다.

  • False가 되는 조건은 다음과 같다.

    1) pop 해야 하는데 stack이 비어 있는 경우
    : 스택의 길이가 0인 경우 해당한다.
    2) 모든 작업을 완료했는데, stack의 길이가 0보다 큰 경우
    : 여는 괄호인 '('가 남아 있는 경우이다.

  • 위 두 가지 케이스에 해당하면 False를 리턴하고, 나머지 경우는 True를 리턴한다.

코드

def solution(s):
    answer = True
    
    stack = []
    for i in s:
        if i == '(':
            stack.append(i)
        elif i == ')':
            if len(stack) == 0:
                return False
            else:
                stack.pop()
    
    # 괄호 쌍을 모두 뺐는데도 stack에 (가 남아있다면, False를 리턴 
    # 닫는 괄호가 부족한 상황임
    if len(stack) > 0:      
        return False
    
    return True

참고 : https://latte-is-horse.tistory.com/182

profile
👩🏻‍💻 AI를 좋아하는 IT학부생

0개의 댓글