괄호

bird.j·2021년 3월 15일
0

백준

목록 보기
67/76

백준 9012


방법1. 스택, flag을 이용해 VPS를 판별한다.


import sys
n = int(sys.stdin.readline())

for _ in range(n):
    flag = 0
    stack = []

    word = sys.stdin.readline().rstrip()
    for w in word:
        if w=='(':
            stack.append(w)
        if (w==')'and len(stack)==0) or (w==')'and stack.pop()!='('):
            flag += 1 
            break
    if len(stack)!=0:
        flag += 1

    if flag == 0:
        print("YES")
    else:
        print("NO")

flag와 stack은 input값이 달라질 때마다 초기화되어야 하므로 for문 안에 있음을 주의한다.

  1. '('이면 스택에 추가하고
  2. ')'를 만났을 때 스택이 비어있거나 stack.pop()결과가 '('가 아니라면 flag++
  3. for문을 다 돌고 나왔는데 stack이 비어있지 않으면 짝이 없는 '('가 남아있다는 뜻이므로 flag++
  4. 모두 끝난 이후 flag가 처음과 같이 0이면 YES, 값이 변했으면 NO

0개의 댓글