Stack1 - 괄호검사

광어회깍뚝썰기·2021년 7월 27일
0

swea-intermediate

목록 보기
13/51

먼저 ''안의 문자열을 삭제하여 취급하지 않는 것부터 시작한다.

  • 입력된 문자열에 '가 있는지 확인하여
  • 만약 '가 존재한다면 쌍으로 묶어 고려하기 위해 '의 count에 2를 나눈만큼 for문을 돌리고 '가 있는 인덱스를 저장한다. (앞 쪽의 ')
  • 앞단계에서 구한 인덱스부터 리스트의 끝까지 이중 for문을 돌려 ' 를 찾는다 (뒤 쪽의 ')
  • 지금까지 구한 인덱스를 참고하여 리스트를 새롭게 갱신한다.

for tc in range(1,int(input())+1):
    arr = input()
    
    #'' 안의 문자열 삭제 -> 고려하지 않는 괄호
    if arr in "'":
        for i in range(arr.count("'")//2):
            arr_chk = arr.index("'")
            for j in range(arr_chk+1, len(arr)):
                if arr[j]=="'":
                    arr= arr[0:arr_chk]+arr[j+1:len(arr)]
                    break
    
    chk=[]
    for i in range(len(arr)):
        if arr[i]=='(' or arr[i]=='{':
            chk.append(arr[i])
        
        elif arr[i]==')' or arr[i]=='}':
            if len(chk)==0: #끝괄호를 만났으나 그 전에 앞괄호를 만나지 못했을 경우
                chk.append(arr[i])
                break
            
            elif ( arr[i]==')' and chk[-1]!='(' ) or ( arr[i]=='}' and chk[-1]!='{' ):
            # 쌍이 맞지 않는 경우 ex) (}, {)
                chk.append(arr[i])
            else:
                chk.pop()

    res=1
    if chk:
        res=0
        
    print(f'#{tc} {res}')

텍스트

0개의 댓글

관련 채용 정보