백준 스택 4949번

안녕하세요, GDSC 웹 멤버 오정인입니다.
스택의 다섯번째 문제를 풀어봤습니다!

풀이

  1. 종료조건을 확인
  2. ’(‘나’[‘가 나올경우 스택에 넣는다
  3. ’)’나’]’가 나올경우 스택에서 pop한것과 짝이 맞는지 확인한다
  4. 스택이 비어있는지 확인하고 답 출력



코드


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")


마무리

스택을 이용하면 잘 풀리는 문제였습니다!