Published:
Updated:

  • Reference
  • 카카오 문제와 비슷한 문제였는데 이번 기회에 딱 기억해야겠다.
    • 이상한 풀이로 너무 많은 시간을 잡아 먹음..


Solution

import collections


def solution(x: str) -> str:
    # (VPS 고려 X) 1.
    # stack = collections.deque()
    #
    # for cur in x:
    #     if stack and cur != stack[-1]:
    #         stack.pop()
    #         continue
    #
    #     if cur == '(':
    #         stack.append('(')
    #     else:
    #         stack.append(')')
    #
    # return 'NO' if stack else 'YES'

    # (VPS 고려 X) 2.
    # stack = collections.deque()
    # left = right = 0
    #
    # for cur in x:
    #     if cur == '(':
    #         left += 1
    #     else:
    #         right += 1
    #
    #     if left == right:
    #         if stack == stack.reverse():
    #             stack = collections.deque()
    #             left = right = 0
    #             continue

    # return 'YES' if left == right else 'NO'

    # 집중 좀 하자 !!
    # "()" 문자열이 기본 VPS야

    # 예외 처리
    if x[0] == ')':
        return 'NO'

    check = 0

    for cur in x:
        # 무조건 '('부터 시작하니까 괜춘
        if cur == '(':
            check += 1
        else:
            check -= 1

        # 음수가 되면 불필요한 괄호가 하나 더 있다는 소리임
        if check < 0:
            return 'NO'

    return 'YES' if check == 0 else 'NO'


T = int(input())
for _ in range(T):
    print(solution(input()))

Leave a comment