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

baekjoon - python - 4949

by winston1214 2020. 9. 5.
반응형

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

 

4949번: 균형잡힌 세상

하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마��

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 in ('(','{','['): # 처음 시작 괄호를 스택에 넣는다.
            stack.push(ch)
        elif ch in (')',']','}'):
            if stack.isEmpty(): # 처음 시작 괄호가 스택에 없는데 닫는게 나와버리면 안됨.
                return False
            else:
                left = stack.pop() # 하나씩 뺀다.
                if (ch == ')' and left != '(') or (ch == '}' and left != '{') or (ch == ']' and left != '['):
                    return False # 닫는 괄호인데 하나씩 뺐을 때 짝이 안맞으면 안됨.
    return stack.isEmpty() # 비어야된다. 남아있으면 False 반환
import sys
while True:
    x = input()
    if x == '.':
        break
    if checkBrackets(x):
        print('yes')
    else:
        print('no')

 

 

반응형

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

baekjoon - python - 10953  (0) 2020.09.06
baekjoon - python - 10610  (0) 2020.09.06
python - baekjoon - 9012  (0) 2020.09.05
python - baekjoon - 10814  (0) 2020.09.05
baekjoon - python - 1181  (0) 2020.09.05

댓글