코딩테스트/백준

백준(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'를 출력.