알고리즘/Java

[python] 백준 균형잡힌 세상(4949)

유리코딩 2022. 1. 9. 19:58
반응형

알고리즘

python 백준 균형잡힌 세상(4949)

 

1. 문제

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

 

2. 풀이

  • if문으로 '['나 '('가 나오늘 stack list에 추가한다
  • i가 ']'이나 ')'가 나올 때 stack의 길이가 0이 아니고, stack의 top이 '['나 '('가 나오면 stack에서 pop을 해준다
  • 아니면 break
  • 이렇게 스택의 길이가 0이면 'yes'를 출력, 0이 아니면 'no'를 출력
while True:
    a = input()
    stack = []

    if a == ".":
        break

    for i in a:
        if i == "[" or i == "(":
            stack.append(i)
        elif i == "]":
            if len(stack) != 0 and stack[-1] == "[":  # stack의 개수가 0이 아니고, stack의 마지막이 '[' 일때
                stack.pop()  # '['을 pop해줌
            else:
                stack.append("]")
                break
        elif i == ")":
            if len(stack) != 0 and stack[-1] == "(":  # stack의 개수가 0이 아니고, stack의 마지막이 ')' 일때
                stack.pop()  # '('을 pop해줌
            else:
                stack.append(")")
                break
    if len(stack) == 0:
        print('yes')
    else:
        print('no')

 

 

[느낀점]

스택을 연습할 수 있는 좋은 문제였다.

 

반응형