1. 출제 문제
해당 문제는 스택의 가장 기본이 되는 문제인 것 같다. 두개의 괄호 ( 와 ) 로 이루어진 것을 VPS라고 하는데 주어진 모든 문자열의 VPS 여부를 확인하여 해당하면 yes, 해당 되지 않으면 no를 출력하게 된다.
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
2. 조건 확인
- VPS는 '('와 ')'의 한쌍으로 이루어져야 한다.
- '(' ')' 내에는 다른 VPS 혹은 문자 등이 들어갈 수 있다.
- 입력 테스트 T 개가 주어지고, 길이가 2이상 50이하인 괄호 문자열이 한 줄에 주어진다.
- VPS 조건에 해당하면 YES 아니면 NO를 출력한다.
3. 접근 방법
- 한 줄에 주어진 문자열의 문자 하나씩 리스트에 넣는데 만약 쌍이 이루어지면 해당 괄호는 pop한다.
- 리스트 내에 문자가 하나도 없으면 yes 출력 하나 이상이면 no 출력한다.
4. 문제 해결
import sys
sys.stdin = open("week02/test.txt","rt")
N = int(input())
for i in range(N):
arrs = input()
stack = []
for j in range(len(arrs)):
if len(stack) != 0 and arrs[j] == ')' and stack[-1] != ')':
stack.pop()
else:
stack.append(arrs[j])
if len(stack) > 0:
print("NO")
else:
print("YES")
'알고리즘 > 백준' 카테고리의 다른 글
[트리] 5639번 : 이진 검색 트리 (0) | 2023.03.19 |
---|---|
[트리] 1991번 : 트리 순회 (0) | 2023.03.19 |
[스택] 10773번 : 제로 (0) | 2023.03.09 |
[스택] 10828번 : 스택 (0) | 2023.03.09 |
[문자열] 2557번 : Hello World (0) | 2023.03.03 |