Recent Posts
Recent Comments
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Today
Total
관리 메뉴

100세까지 코딩

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

코딩테스트/파이썬

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

100세까지 코딩 2024. 1. 27. 11:07
 

4949번: 균형잡힌 세상

각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에

www.acmicpc.net

문제

나의 생각
  • 스택을 구현한다.
  • while 반복문 사용하고 . 이 들어오면 break.
  • 문장에 "([" 이 들어있으면 stack에 넣는다.
  • 문장에 ")]" 이 들어있으면 stack에서 가장 최상위에 있는 것을 꺼낸다. pop()
  • ")]"이 나왔는데 stack이 비어있거나 pop() + ")]""()" , "[]"처럼 쌍을 이루지 않으면 false
나의 풀이
import sys

while True:
    stack = []
    input_data = sys.stdin.readline().rstrip()
    flag = True

    if input_data == ".":
        break
    for data in input_data:
        if data in "([":
            stack.append(data)
        elif data in ")]":
            if not stack or stack.pop() + data not in ["()", "[]"]:
                flag = False

    print("yes") if flag and not stack else print("no")
참고
1. if not stack: stack이 비어있으면 True
2. in 연산자 : 안에 포함되어있으면 True