백준 9012번 괄호 python

tomkitcount·2025년 4월 2일

매일 알고리즘

목록 보기
13/298

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

문제는 어렵게 보이지만 결국 올바른 괄호 문자열 ' ( ' , ' ) ' 을 썼는지 확인하는 문제. 올바르게 썼다면 YES, 아니라면 NO 를 출력.

해답 :

import sys

T = int(sys.stdin.readline().strip())


for _ in range(T):
    PS = sys.stdin.readline().strip()
    stack = []

    for j in PS:
        if j == '(':
            stack.append(j)
        elif j == ')':
            if stack:
                stack.pop()
            else:
                print("NO")
                break
    else:
        if stack == []:
            print("YES")
        else:
            print("NO")

입력받은 문자열 내에서 for문을 돌아서 만약 문자가 ( 라면 리스트에 추가해주고 )라면 팝을 해주는데 만약 스택이 비어있다면 "NO"를 출력해주고 포문을 종료한다.

만약 break가 안뜨고 잘 반복문을 순회했다면 else 문으로 가는데
이 때 스택이 비어있는 경우 YES를 출력해주고 아니라면 NO를 출력해준다.

이 이유는 만일 PS가 ( ( ) 인 경우
for 반복문을 돌고 나왔을 때 ( 가 남기 떄문이다.

profile
To make it count

0개의 댓글