[백준 9012] 괄호

Junyoung Park·2022년 2월 25일
0

코딩테스트

목록 보기
82/631
post-thumbnail

1. 문제 설명

괄호

2. 문제 분석

() 개수를 카운트하면서 스택에 넣는다. )(와 개수가 같아야 하며, (가 스택에 이미 들어 있을 때에만 올바른 괄호로 사용 가능하다.

  • (가 있을 때만 )를 사용할 수 있다. 이때 스택에서 (을 팝하면서 개수를 맞춰준다.

  • ()의 총 개수가 같아야 하는데, ) 기준으로 스택에서 팝하기 때문에 마지막에 스택이 비었는지 체크한다.

3. 나의 풀이

t = int(input())

for _ in range(t):
    stack = []
    VPS = True
    pars = input()
    for par in pars:
        if par == '(':
            stack.append(par)
            # '('는 스택에 계속 넣을 수 있다.
        else:
            # ')'는 스택에 '('가 담겨 있어야 한다. 
            if stack: stack.pop(-1)
            else:
                VPS = False
                break
                # ')'가 입력될 때 스택에 '('가 없다면 잘못된 괄호 사용

    if VPS and stack: VPS = False
    # ')'보다 '('가 더 많을 때 잘못된 괄호 사용이므로 VPS는 False로 체크
    if VPS: print('YES')
    else: print('NO')
profile
JUST DO IT

0개의 댓글