[백준/BOJ][Python] 9012번 괄호

Eunding·2024년 11월 20일
0

algorithm

목록 보기
46/107

9012번 괄호

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

아이디어


3년 전부터 굉장히 주기적으로 푼 문제이다

1) stack을 만들어서 (이 나오면 push, )이 나오면 pop하면 된다.
2) pop할 때 stack이 empty라면 answer = "NO" ex) '))))'
3) 주어진 입력을 다 훑는 반복문이 끝났는데도 stack이 남아있다면 answer = "NO" ex) '()(((('
이 2가지 경우만 잘 처리해주면 되는 문제이다.

+) answer = "YES"로 초기화하여 괄호가 맞지 않는 경우에만 "NO"로 바꿔주면 편하다.


코드

import sys
input = sys.stdin.readline

n = int(input())

for _ in range(n):
    s = input().rstrip()
    stack = []
    answer = "YES"
    for i in range(len(s)):
        if s[i] == '(':
            stack.append('(')
        else:
            if not stack: # )인데 스택이 비어있다면
                answer = "NO"
                break
            stack.pop()
    if stack:
        answer = "NO"
    print(answer)

0개의 댓글