코딩테스트/백준
백준(BAEKJOON) 9012 괄호 - Python
Moonsu99
2023. 11. 21. 15:08
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
n = int(input()) # 반복할 테스트케이스 입력
for _ in range(n): # 각 테스트 케이스에 대해 반복
s = input() # 괄호 문자열 입력
stack = [] # 스택 초기화(괄호저장)
answer = 'NO' # default no, 조건 충족 시 yes
for i in s: # 입력받은 문자열의 각 문자에 대해 반복
if i == '(': # 열린 괄호 (
stack.append(i) # 스택에 추가
elif i == ')': # 닫힌 괄호 ) 라면
if len(stack) > 0 and stack[-1] == '(': # 스택이 비어있지 않고, 마지막 요소가 ( 인 경우
stack.pop() # 스택에서 ( 제거
else: # 스택이 비어있거나 마지막 요소가 ( 가 아닌 경우
stack.append(i) # 스택에 ) 추가
if len(stack) == 0: # 모든 검사를 마치고 스택이 비어있으면
answer = 'YES' # 결과는 yes
print(answer) # 결과 출력
열린 괄호가 나오면 스택에 추가하고, 닫힌 괄호가 나오면 스택의 마지막 괄호와 비교.
만약 스택의 마지막 괄호가 열린 괄호이면, 이는 올바른 괄호 쌍을 형성하므로 스택에서 제거.
문자열의 모든 문자를 처리한 후 스택이 비어있으면, 모든 괄호가 올바르게 닫혔다는 의미이며, 'YES'를 출력.
그렇지 않으면 'NO'를 출력.