Post

(프로그래머스 Lv.2) 올바른 괄호 / with.Stack

문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/12909

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
def solution(s):
    stack = []
    
    for i in s:
        if i == '(':
            stack.append(i)
        elif i == ')':
            if stack:
                stack.pop()
            else:
                return False
                
    return len(stack) == 0

풀이

  1. 빈 리스트를 생성해놓고,
  2. s의 요소를 빼기 위해 반복문을 돌리는데,
  3. 요소(i)가 만약 ‘(‘면 빈 리스트에 현재 요소 ‘(‘를 append한다.
  4. 반대로 만약 요소가 ‘)’고,
    1. 리스트가 비어있지 않으면, 리스트에 앞서 들어가있는 ‘(‘를 pop한다. 왜냐면 그래야 ‘()’ 요렇게 괄호 짝이 지어지기 때문이다.
    2. 반대로 만약 ‘)’이 나왔는데, 리스트가 비어있다면 False를 return한다. 왜냐면 짝이 없다는 소리니까 ㅇㅇ.
  5. 그 후 검증(?)차원에서 stack이 비어있는지 체크하고, 비어있다면(리스트 길이가 0이라면) True를 return한다. 왜냐면 4-1에서 괄호 짝이 맞으면 pop을 했기 때문이다.

![\[image\](https://i.pinimg.com/736x/83/66/f3/8366f342b91e5f0524d3e13fb52bd206.jpg)](https://i.pinimg.com/736x/83/66/f3/8366f342b91e5f0524d3e13fb52bd206.jpg)

This post is licensed under CC BY 4.0 by the author.