알고리즘 스터디 스택 - 4949번
스택 알고리즘 4949번 풀이
study백준 스택 4949번
안녕하세요, GDSC 웹 멤버 오정인입니다.
스택의 다섯번째 문제를 풀어봤습니다!
풀이
- 종료조건을 확인
- ’(‘나’[‘가 나올경우 스택에 넣는다
- ’)’나’]’가 나올경우 스택에서 pop한것과 짝이 맞는지 확인한다
- 스택이 비어있는지 확인하고 답 출력
코드
import sys
while(True):
n=list(sys.stdin.readline().rstrip())
if (len(n)==1 and n[0]=='.'):#종료조건 확인
break
st=[]
ans=True
for i in n:
if i=='('or i=='[':#'('이거나'['이면 스택에 넣는다
st.append(i)
elif i==')':#')'일경우
if not st:#스택이 비어있는지 확인하고
ans=False
break
if st.pop()!='(':#pop한 요소가 '('가 맞는지 확인
ans=False
break
elif i==']':#']'일경우
if not st:#스택이 비어있는지 확인하고
ans=False
break
if st.pop()!='[':#pop한 요소가 '['가 맞는지 확인
ans=False
break
if st:#for문이 끝나고 스택이 비어있는지 확인
ans=False
if ans:#출력
print("yes")
else:
print("no")
마무리
스택을 이용하면 잘 풀리는 문제였습니다!