📖 스택/큐 > 올바른 괄호

📖What I thought

  • 스택의 전형적인 문제
  • 스택을 하나 만들어서 top와 다른 값을 비교해서 push, pop 연산을 해줌

push : (이 들어올 때만 push 연산을 해줌 pop: (이 들어있는데 ) 차례라면 pop연산을 해줌

  • 🚨스택이 비어있는데 ) 차례
  • 🚨for문을 다 돌았는데 stack 안에 (가 남아있음

📖풀이

📎Stack

def solution(par):
    st = []
    
    for p in par:
        if p == '(':
            st.append(p)
            continue
        if not st and p == ')':
            return False
        if st and p == ')':
            st.pop()
    
    return False if st else True

📎Calculate point

def solution(par):
    cnt = 0
    for p in par:
        if p == '(':
            cnt += 1
        else:
            if cnt <=0:
                return False
            else:
                cnt -= 1
    
    return True if cnt == 0 else False
  • 굳이 리스트를 하나 더 만들지 않고 변수만 하나 만들어서 해결할 수 있는 방법!! 굿 아이디어인 듯
  • (는 +1 )는 -1로 두고 loop를 돌며 계산
  • loop를 돌면서 0보다 값이 작아지면 이건 (가 없는데 )가 들어오지 않은 올바르지 않은 상태이므로 False return
  • 그렇게 값을 계산해준 후 값이 0이면 올바른 괄호이므로 True return, 양수이면 (가 더 많은 옳지 않은 상태이므로 False return

📖What I learned

📖관련 지식

📎Stack