본문 바로가기
백준

[백준] 4949번 파이썬 (균형잡힌 세상)

by 헤이즐넛 좋아하는 개발자 2024. 3. 20.

1. 문제와 예제

문제
예제

닫혀있는 괄호가 나왔을 때 열려있는 괄호를 뒤에서부터 찾게 되므로 stack 구조를 활용하면 되겠다.


2. 전체 코드

import sys
input = sys.stdin.readline

while True:
    sen = input().rstrip() # 문자열
    stack = []
    isBal = True # 균형을 이루고 있는지 여부

    if (sen == '.'): # 입력 종료조건
        break
    for s in sen:
        if (s == '(' or s == '['):
            stack.append(s)
        elif s == ')':
            if (len(stack) != 0 and stack[-1] == '('):
                stack.pop()
            else:
                isBal = False
                break
        elif s == ']':
            if (len(stack) != 0 and stack[-1] == '['):
                stack.pop()
            else:
                isBal = False
                break
        # else는 영문 알파벳, 공백일 때다
    if (len(stack) != 0 or not isBal):
        print("no")
    else:
        print("yes")

3. 풀이

예제를 써보면서 yes, no가 나오는 규칙을 각각 생각해보고 추가로 다른 경우도 있는지 체크해주면 코드를 완성할 수 있다.