yha97 2022. 11. 1. 13:05

날짜 : 2022. . 

사용 언어 : python

 

문제

 

 

코드

import sys

while True:
    s = str(sys.stdin.readline().rstrip()) # 문자열 입력
    if s == ".":
        break
    stack = []
    check = True
    for i in range(len(s)):
        if s[i] == "(" or s[i] == "{" or s[i] == "[":
            stack.append(s[i])
        if s[i] == ")" or s[i] == "}" or s[i] == "]":
            if len(stack) < 1:
                check = False
                break
            if s[i] == ")":
                if stack[-1] != "(":
                    check = False
                    break
                else: stack.pop()
            elif s[i] == "}":
                if stack[-1] != "{":
                    check = False
                    break
                else: stack.pop()
            elif s[i] == "]":
                if stack[-1] != "[":
                    check = False
                else: stack.pop()
    if len(stack) > 0:
        check = False
    if check: print("yes")
    else: print("no")

 

 

알게된 점

- stack을 구현하는 문제였다.

- 각 괄호를 개행하는 케이스의 경우 stack에 push하고 닫는 케이스는 스택의 원소를 pop했을 때 괄호와 매칭되는지를 판별하여 check 값을 변경하여 이에따라 output을 수정하였다.

 

 

참고 사이트