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

sun1·2023년 3월 16일

백준

목록 보기
7/16
post-thumbnail

문제

' 4949번 균형잡힌 세상 '
https://www.acmicpc.net/problem/4949

풀이

조건

  • 문자열에 포함되는 괄호는 소괄호( "( )" ) 와 대괄호( "[ ]" )로 2종류이다.
  • 모든 왼쪽 소괄호( " ( " )는 오른쪽 소괄호( " ) " )와만, 모든 왼쪽 대괄호( " [ " )는 오른쪽 대괄호( " ] " )와만 짝을 짝을 이뤄야 한다.
  • 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. -> 왼쪽 괄호 없이 오른쪽 괄호만 나올 수 없다.
  • 입력의 종료조건으로 맨 마지막에 온점 하나(".")가 들어온다.

Check point

  • 스택이란?
 데이터의 삽익과 삭제가 데이터의 가장 한쪽 끝에서만 일어나는 자료구조
  • 스택의 특징
후입선출(Last In, First Out) : 가장 마지막으로 추가된 항목을 가장 첫번째로 제거한다.
  • push : 데이터 삽입
  • pop : 데이터 삭제 -> pop() : 가장 마지막 데이터 삭제
  • top : 가장 마지막에 삽입한 데이터를 삭제하지 않고 return
  • isEmpty : 스택이 비어있는지 여부 확인

코드

Python

def func(arr):
    stack=[]
    for a in arr:
        if a == '(' or a=='[':
            stack.append(a)
        elif stack == [] and (a == ')' or a== ']'):
            return 'no'
        elif stack and a==')':
            if stack[-1] == '(':
                stack.pop()
            else:
                stack.append(a)
        elif stack and a==']':
            if stack[-1] == '[':
                stack.pop()
            else:
                stack.append(a)
    if len(stack) ==0:
        return 'yes'
    else:
        return 'no'

while True:
    a=input()
    if a == '.':
        break
    print(func(a))

0개의 댓글