Always Be Wise

스택 : 괄호(백준 9012번) 본문

알고리즘/백준

스택 : 괄호(백준 9012번)

bewisesh91 2021. 11. 17. 23:38
728x90

▶ 문제 : https://www.acmicpc.net/problem/9012

 

9012번: 괄호

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

www.acmicpc.net

##### 문제 #####
# 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 
# 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다.
# 여러분은 입력으로 주어진 괄호 문자열이 VPS 인지 아닌지를 판단해서 그 결과를 YES 와 NO 로 나타내어야 한다. 

##### 입력 #####
# 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 
# 각 테스트 데이터의 첫째 줄에는 괄호 문자열이 한 줄에 주어진다. 하나의 괄호 문자열의 길이는 2 이상 50 이하이다. 

##### 출력 #####
# 출력은 표준 출력을 사용한다. 만일 입력 괄호 문자열이 올바른 괄호 문자열(VPS)이면 “YES”, 아니면 “NO”를 한 줄에 하나씩 차례대로 출력해야 한다. 

 

▶ 접근 방법

 

▶ 풀이 코드

import sys

N = int(input())

def check_VPS(data):
    stack = []
    for i in data :
        if i == "(" :
            stack.append(i)
        else :
            if stack :
                stack.pop()
            else :
                return False
    if stack :
        return False
    else :
        return True

for _ in range(N) :
    data = sys.stdin.readline().rstrip()
    if check_VPS(data) :
        print('YES')
    else :
        print('NO')

 

▶ 관련 링크

2021.11.17 - [알고리즘] - 스택(Stack)이란?

2021.11.17 - [알고리즘] - 스택 : 스택(백준 10828번)

2021.11.17 - [알고리즘] - 스택 : 제로(백준 10773번)

2021.11.17 - [알고리즘] - 스택 : 막대기(백준 17608번)

2021.11.17 - [알고리즘] - 스택 : 탑(백준 2493번)

2021.11.17 - [알고리즘] - 스택 : 원 영역(백준 10000번)

2021.11.17 - [알고리즘] - 스택 : 괄호의 값(백준 2504번)

2021.11.17 - [알고리즘] - 스택 : 크게 만들기(2812번)

Comments