Algorithm Study/Python

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

728x90
반응형

Silver IV

# 4949 균형잡힌 세상

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

 

4949번: 균형잡힌 세상

하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마

www.acmicpc.net

 

풀이

while True:
    text = input()
    
    # 반복문 탈출 조건 설정
    if text == '.':
        break
    
    s = [0]  # s[-1]을 이용할 때 에러 방지를 위해 s = [] 대신 사용
    
    for i in text:
        if i == '(':
            s.append('small')
        
        elif i == ')':
            if s[-1] == 'small':
                s.pop()
            else:
                s.append('-small')
        
        elif i == '[':
            s.append('big')
        
        elif i == ']':
            if s[-1] == 'big':
                s.pop()
            else:
                s.append('-big')
    
    if len(s) >= 2:
        print('no')
    else:
        print('yes')

 

후기

  • 알고리즘 풀이에 재능러가 있다면, 나는 재능러는 아닌것 같다.. ㅠ
  • 비슷한 괄호 문제에서 cnt를 사용한 경험이 있어서인지, 스택으로 풀이하는 것이 가장 좋다는 것을 깨닫기 까지 오래걸렸다.