https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
풀이 과정
1. 문자열 도중에 )이 나온 횟수가 (이 나온 횟수보다 많아지면 안된다
2. 문자열이 끝날 때 (이 나온 횟수와 )이 나온 횟수는 같아야 한다
숫자 변수 하나 or 스택을 이용하여 위 조건을 문자열이 만족하는지 검사하면 된다. 스택을 이용하여 검사하려면 (이 나오면 원소를 하나 push, )이 나오면 원소를 하나 pop한다. 스택이 비었는데 pop을 하게 되는 문자열이면 괄호 문자열이 아니고, 문자열을 다 검사했는데 스택에 원소가 남아있으면 괄호 문자열이 아니다. 이외의 경우면 괄호 문자열이게 된다.
코드
import sys
T = int(sys.stdin.readline())
for i in range(T):
ps = sys.stdin.readline().rstrip()
stack = []
noCount = False
for j in ps:
if j == '(':
stack.append(1)
elif j == ')':
if len(stack) == 0:
noCount = True
break
else: del stack[-1]
if len(stack) == 0 and noCount == False: print('YES')
else: print('NO')
'알고리즘 문제 풀이 > 백준' 카테고리의 다른 글
백준 9093 - 단어 뒤집기 [파이썬] (0) | 2022.03.23 |
---|---|
백준 1158 - 요세푸스 문제 [파이썬] (0) | 2022.03.23 |
백준 10845 - 큐 [파이썬] (0) | 2022.03.20 |
백준 1874 - 스택 수열 [파이썬] (0) | 2022.03.19 |
백준 10828 - 스택 [파이썬] (0) | 2022.03.18 |