본문 바로가기

알고리즘/문자열 처리

파이썬 | 백준 | 4949 | 균형잡힌 세상

solution

1. 스택 이용

# 4949, 균형잡힌 세상
import sys

txt = []    # 문자열 입력

while True:
    str = sys.stdin.readline().rstrip()
    if str == '.':
        break
    txt.append(str)

ans = []    # yes, no 저장할 배열

for txt_ in txt:
    check = 1   # 균형 잡힌 문자열이면 1
    stack = []
    for i in txt_:
        if i == '(':
            stack.append('(')
        elif i == ')':
            if len(stack) == 0 or stack[-1] != '(':
                check = 0   # 균형 잡힌 문자열 X
                break
            else:
                stack.pop()
        elif i == '[':
            stack.append('[')
        elif i == ']':
            if len(stack) == 0 or stack[-1] != '[':
                check = 0   # 균형 잡힌 문자열 X
                break
            else:
                stack.pop()

    if len(stack) != 0 or check == 0:   # 스택에 남은 괄호가 있거나 check가 0이면
        ans.append('no')
    else:
        ans.append('yes')


for ans_ in ans:
    print(ans_)

29380KB

108ms

    if len(stack) != 0 or check == 0:
        txt_ = 'no'
    else:
        txt_ = 'yes'

txt_ 변경 안 됨

 

문제 출처 https://www.acmicpc.net/problem/4949

 

4949번: 균형잡힌 세상

문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단

www.acmicpc.net