def is_valid(string): left = ['[', '(', '{'] # 여는 괄호들을 left 리스트에 저장 right = [']', ')', '}'] # 닫는 괄호들을 right 리스트에 저장 stack = [] # 빈 리스트 선언 for i in string: # string에서 문자들을 하나씩 가져옴 if i in left: # 문자 i 가 left 리스트에 존재한다면 stack.append(i) # stack 리스트에 문자 i 를 추가 elif i in right: #문자 i 가 right 리스트에 존재한다면 if left.index(stack.pop()) != right.index(i): # left 리스트의 인덱스와 right 리스트의 인덱스가 같지 않으면 False를 리턴 return False return len(stack) == 0 #stack 리스트의 길이가 0이면 True 리턴