Data Structure/Stack

[백준 4949번] 균형잡힌 세상

킹우현 2023. 10. 18. 18:12

 

 

4949번: 균형잡힌 세상

각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에

www.acmicpc.net

answer = []

def check_balanced(string):

    stack = []

    for element in string:
        if element == '(' or element == '[':
            stack.append(element)
        elif element == ')':
            if not stack:
                return False
            else:
                if stack[-1] == '(':
                    stack.pop()
                else:
                    return False
        elif element == ']':
            if not stack:
                return False
            else:
                if stack[-1] == '[':
                    stack.pop()
                else:
                    return False
    
    if stack:
        return False
    
    return True

while True:
    string = input()

    if string == '.':
        break

    if check_balanced(string):
        answer.append("yes")
    else:
        answer.append("no")
                
for ans in answer:
    print(ans)

이번 문제는 바로 이전에 풀었던 '9012번 : 괄호' 문제와 동일한데, 대괄호가 추가되었다는 점을 제외하면 동일한 문제이다.

 

따라서 현재 닫는 괄호와 바로 여는 괄호가 일치( ( ) , [  ] )하는지 확인하고, 일치하지 않는다면 False를 반환하면 된다.

'Data Structure > Stack' 카테고리의 다른 글

[백준 2504번] 괄호의 값  (1) 2023.10.18
[백준 10799번] 쇠막대기  (1) 2023.10.18
[백준 9012번] 괄호  (1) 2023.10.18
[백준 17298번] 오큰수  (0) 2023.10.14
[프로그래머스 Lv.2] 올바른 괄호  (0) 2023.09.21