백준 - 4949 (Python) - 균형잡힌 세상

박준영·2021년 6월 20일
0
post-thumbnail
post-custom-banner

백준 4949

균형잡힌 세상


저번에 풀었던 문제에는 소괄호의 짝이 맞는지만 찾는 것이었지만 이 문제는 업그레이드 버전이다.

문자열 내에 대괄호와 소괄호의 짝이 맞는지를 찾는 문제이며,
만약 한 줄에 .만이 존재해도 균형잡힌 문자열이다.

  • 풀이 방법
  1. 문자열을 입력 받는다.

  2. 좌측 괄호('(', '[')인지 검사한다.
    만약 좌측 괄호라면 스택에 넣어준다.

  3. 우측 괄호인지(')', ']') 검사한다.
    만약 우측 괄호라면 스택의 원소와 비교하여 괄호의 균형이 맞는지 검사한다.

  4. 입력받은 문자열이 종료 문자 '.'라면 종료를, 아니라면 문제에서 원하는 출력을 수행한다.

while True:
    s = input()
    if s == '.':
        break
    stk = []
    temp = True
    for i in s:
        if i == '(' or i == '[':
            stk.append(i)
        elif i == ')':
            if not stk or stk[-1] == '[':
                temp = False
                break
            elif stk[-1] == '(':
                stk.pop()
        elif i == ']':
            if not stk or stk[-1] == '(':
                temp = False
                break
            elif stk[-1] == '[':
                stk.pop()
    if temp == True and not stk:
        print('yes')
    else:
        print('no')
post-custom-banner

0개의 댓글