BOJ 9012. 괄호 (Python)

2021. 2. 16. 15:34Problem Solving/BOJ

BOJ 9012. 괄호

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

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

풀이

  1. 여는괄호 '(' 면 스택에 담는다.
  2. 닫는괄호 ')' 면 스택에서 pop()한다.
  3. 만약 중간에 '('가 아닐 때, 스택이 비어있으면 괄호가 맞지 않는 것이므로 답은 "NO"이다.
  4. 루프가 종료되고 스택이 비어있으면 괄호가 맞는 것이므로 "YES"
  5. 루프가 종료되어도 스택에 무언가가 남아있다면 괄호가 맞지 않는 것이므로 "NO"이다.

소스코드

import sys

N = int(input())
for _ in range(N):
    brackets = sys.stdin.readline().rstrip()

    stack = []
    is_valid = True
    for cur in brackets:
        if cur == '(':
            stack.append(cur)
            continue
        if not stack:
            is_valid = False
            break
        if cur == ')':
            stack.pop()
            continue

    if not stack and is_valid == True:
        print("YES")
    if stack or is_valid == False:
        print("NO")

반응형

'Problem Solving > BOJ' 카테고리의 다른 글

BOJ 10828. 스택 (Python)  (0) 2021.02.16
BOJ 10816. 숫자 카드 2 (Python)  (0) 2021.02.16
BOJ 1978. 소수 찾기 (Python)  (0) 2021.02.15
BOJ 1920. 수 찾기 (Python)  (0) 2021.02.15
BOJ 11650. 좌표 정렬하기 (Python)  (0) 2021.02.15