
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
문제 풀이
판별하기 위해서는 괄호를 반드시 배열이나 리스트에 저장을 해야하는 데 ')'의 경우 굳이 저장을 할 필요가 없다.
'('만 저장을 하다가 만약 ')'을 만나면 저장한 '('를 빼기만 하면 된다. 이때, 리스트에 남은 '('가 없다면 VPS는 성공한것으로 모든 괄호가 짝이 맞는 것이고 만약에 그렇지 않다면 NO를 출력하면 된다. 그리고 리스트 비어있다면 ')'가 '('보다 많거나 처음부터 리스트가 비어있는 경우이니 이 경우에도 NO를 출력하면 된다. 이를 코드로 나타내면 다음과 같이 된다.
T = int(input())
result = []
def VPS(string):
stack = []
for char in string:
if char == '(':
stack.append(char)
elif char == ')':
if not stack: #stack이 비어있다면 즉 '('가 없다면
return 'NO'
stack.pop() #무조건 빼라
if not stack:
return 'YES' # stack 이 비어있으면 즉 모든 '('에 짝이 있다면
else:
return 'NO' # 남은 '('가 있다면
for _ in range(T):
string = str(input())
print(VPS(string))'알고리즘_파이썬' 카테고리의 다른 글
| 백준 10816 숫자카드 2 (0) | 2024.01.19 |
|---|---|
| 백준 10866 덱 (0) | 2024.01.18 |
| 백준 1181 단어정렬 (1) | 2024.01.13 |
| 백준 1110 더하기 사이클 (0) | 2024.01.13 |
| 백준 1652 누울 자리를 찾아라 (0) | 2024.01.11 |