📖 스택/큐 > 올바른 괄호
📖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