[백준/파이썬] 4949번

민정·2023년 3월 15일
0

[백준/파이썬]

목록 보기
121/245
post-thumbnail

백준 4949번

문제

https://www.acmicpc.net/problem/4949

코드

from collections import deque
import sys
input = sys.stdin.readline
while True:
    flag = True
    temp = input().rstrip('\n')
    result = deque([])
    if temp == '.':
        exit()
    else: 
        for i in temp:
            if (i == '[' or i == '('):
                result.append(i)
            elif (i == ']' or i == ')'):
                if len(result) == 0 :
                    flag = False
                    break
                elif i == ']' and result[-1] == '[':
                    result.pop()
                elif i == ')' and result[-1] == '(' :
                    result.pop()
                else:
                    flag = False
                    break
        if result or flag == False:
            print("no")
        else:
            print("yes")

풀이

  • 만약 입력받은 문자가 [ 나 ( 이면 deque로 만든 배열에 넣어줍니다.
  • 입력받은 문자가 ]이고 deque의 마지막 문자가 [이면 마지막 문자인 [을 빼줍니다. )도 마찬가지로 deque의 마지막 문자가 (이면 마지막 문자인 (을 빼줍니다.
    만약 deque의 길이가 0 (아무 문자도 들어있지 않음) 이라면 flag값을 false로 바꾸고 break문을 통해 반복문을 빠져 나옵니다.
  • 문자열을 다 돌고 deque내에 문자가 남아있거나 flag값이 false라면 no를 출력, 그 외의 경우는 true를 출력합니다.
profile
パㅔバ6ㅇr 덤벼ㄹΓ :-0

0개의 댓글