기록하고 까먹지 말기

4949 본문

전공/백준

4949

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을 수정하였다.

 

 

참고 사이트

 

'전공 > 백준' 카테고리의 다른 글

9095  (0) 2022.11.02
11724  (0) 2022.11.01
7576  (0) 2022.11.01
1213  (0) 2022.10.31
1012  (0) 2022.10.30