Notice
Recent Posts
Recent Comments
05-21 00:03
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

-

[백준 4949] 균형잡힌 세상 - 파이썬 본문

Algorithm

[백준 4949] 균형잡힌 세상 - 파이썬

choiht 2023. 4. 26. 18:55
반응형

문제

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

 

4949번: 균형잡힌 세상

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

www.acmicpc.net

 

 

 

풀이

while(True):
    sentence = input()
    if(sentence == "."):
        break
    stack = []


    for i in sentence:
        if(i == "(" or i == "["):
            stack.append(i)
        if(i == ")"):
            if(len(stack) != 0 and stack[-1] == "("):
                stack.pop()
            else:
                stack.append(")")
                break
        if(i == "]"):
            if(len(stack) != 0 and stack[-1] == "["):
                stack.pop()
            else:
                stack.append("]")
                break


    if(len(stack) == 0):
        print("yes")
    else:
        print("no")

 

1. 입력받은 문장에서 괄호만 찾는다.

2. 만약 괄호가 여는 괄호면 스택에 추가한다. 

3. 만약 괄호가 닫는 괄호면 경우의 수가 두 개 있는데, 

3-1. 여는 괄호가 추가된 상태에서 닫는 괄호가 들어온 경우 여는 괄호를 스택에서 제거한다. 

3-2. 여는 괄호가 없는 상태에서 닫는 괄호가 들어온 경우 닫는 괄호를 스택에 추가하고 for문을 종료한다.

4. 만약 스택이 비어있으면 yes를, 스택이 비어있지 않으면 no를 출력한다. 

 

 

 

 

반응형
Comments