[String] 4949번 - 균형잡힌 세상(42일차)

bob.sort·2021년 7월 16일
0
post-thumbnail
#코드 실행 시간 단축
import sys
input = sys.stdin.readline

while(True):
  #문자열 입력
  string = input().rstrip()
  #왼쪽 괄호들을 담는 스택
  stack = []
  #판독 결과를 표시하는 변수
  flag = 0
  #. 입력 시 무한반복 종료
  if(string == '.'):
    break
  #문자열 입력 시
  else:
    #문자열의 각 문자에 대해
    for i in range(len(string)):
      #왼쪽 괄호 입력 시 스택에 해당 괄호 추가 (짝 괄호 대기)
      if(string[i] == '(' or string[i] == '['):
        stack.append(string[i])
      #오른쪽 소괄호 입력 시
      elif(string[i] == ')'):
        #대기 중인 괄호가 있고, 그 괄호가 짝이 맞는 괄호일 때 해당 괄호 대기 해제
        if(stack and stack[-1] == '('):
          stack.pop()
        #그 외의 경우 판독 실패 (대기 중인 괄호가 없거나, 짝이 안맞을 때)
        else:
          flag = 1
          break
      #오른쪽 중괄호 입력 시
      elif(string[i] == ']'):
        #대기 중인 괄호가 있고, 그 괄호가 짝이 맞는 괄호일 때 해당 괄호 대기 해제
        if(stack and stack[-1] == '['):
          stack.pop()
        #그 외의 경우 판독 실패 (대기 중인 괄호가 없거나, 짝이 안맞을 때)
        else:
          flag = 1
          break
    #판독 결과가 성공이면 yes
    if(flag == 0):
      print("yes")
    #판독 실패면 no
    else:
      print('no')

#인사이트
#문자열 짝맞추기 문제는 스택 큐로 왠만하면 풀린다!
profile
Interest in Computer Graphics and Computer Vision

0개의 댓글