Algoritm/BOJ

[BOJ] 9012번: 괄호

twoDeveloper 2022. 9. 6. 11:05

■ 문제해결

 올바른 괄호 문자열을 VPS라고 부른다. VPS의 타당성을 확인할 check 함수를 별도로 구성하였고, stack 리스트에 vps 입력값의 괄호를 pop 시켜 ')' 값이 나오면 stack에 append 시키고, '(' 값이 나오면 stack에 존재하는 ')' 값을 pop 시킵니다. 과정 중에 stack의 값이 존재한다면 올바른 VPS가 아니므로 return False 시킵니다.

 이 후 stack의 리스트에 '(' 값이 존재 한다면 VPS의 타당성을 만족시키지 않으므로 return False 시키고, stack의 리스트에 값이 존재하지 않는다면 VPS의 타당성을 만족시키므로 return True 시킵니다.

 

※ 리스트의 값이 존재하면 if 판정은 '참(True)'으로 내린다. 하지만 리스트가 비어있으면 '거짓(False)'로 판정한다.

 


■ 문제해답

import sys
input = sys.stdin.readline

n = int(input())

def check(vps):
  stack = []
  while vps:
    v = vps.pop()

    if v == ')':
      stack.append(v)
    else:
      if not stack:
        return False
      stack.pop()
      
  if stack:
    return False
  else:
    return True

for i in range(n):
  vps = list(input().rstrip())
  if check(vps):
    print("YES")
  else:
    print("NO")

■ 문제출처

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

 

9012번: 괄호

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

www.acmicpc.net

 

'Algoritm > BOJ' 카테고리의 다른 글

[BOJ] 1406번: 에디터  (0) 2022.09.06
[BOJ] 1874번: 스택 수열  (0) 2022.09.06
[BOJ] 9093번: 단어 뒤집기  (0) 2022.09.06
[BOJ] 10828번: 스택  (0) 2022.09.06
[BOJ] 1107번: 리모콘  (0) 2022.04.20