본문 바로가기
백준 문제풀이

python - baekjoon - 9012

by winston1214 2020. 9. 5.
반응형

https://www.acmicpc.net/problem/9012

 

9012번: 괄호

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

www.acmicpc.net

# @Author YoungMinKim
# baekjoon

class Stack:
    def __init__(self):
        self.top=[]
    def isEmpty(self):return len(self.top) == 0
    def size(self): return len(self.top)
    def clear(self): self.top=[]
    def push(self,item): 
        self.top.append(item)
    def pop(self): 
        if not self.isEmpty():
            return self.top.pop(-1)
    def peek(self): 
        if not self.isEmpty():
            return self.top[-1]
def checkBrackets(statement): # 괄호 검사기
    stack = Stack()
    for ch in statement:
        if ch == '(': # 처음 시작 괄호를 스택에 넣는다.
            stack.push(ch)
        elif ch == ')':
            if stack.isEmpty(): # 처음 시작 괄호가 스택에 없는데 닫는게 나와버리면 안됨.
                return False
            else:
                left = stack.pop() # 하나씩 뺀다.
                if (ch == ')' and left != '('):
                    return False # 닫는 괄호인데 하나씩 뺐을 때 짝이 안맞으면 안됨.
    return stack.isEmpty() # 비어야된다. 남아있으면 False 반환
import sys
N = int(sys.stdin.readline())
for _ in range(N):
    x = sys.stdin.readline()
    if checkBrackets(x):
        print('YES')
    else:
        print('NO')

 

 

반응형

'백준 문제풀이' 카테고리의 다른 글

baekjoon - python - 10610  (0) 2020.09.06
baekjoon - python - 4949  (0) 2020.09.05
python - baekjoon - 10814  (0) 2020.09.05
baekjoon - python - 1181  (0) 2020.09.05
baekjoon - python - 10773  (0) 2020.09.05

댓글