제니노트

[SWEA] 1218. [S/W 문제해결 기본] 4일차 - 괄호 짝짓기 (python) 본문

코딩테스트/SWEA

[SWEA] 1218. [S/W 문제해결 기본] 4일차 - 괄호 짝짓기 (python)

yangjennie 2023. 6. 6. 18:42
반응형

1) [SWEA] 1218. [S/W 문제해결 기본] 4일차 - 괄호 짝짓기 [python]

문제 출처 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14eWb6AAkCFAYD&categoryId=AV14eWb6AAkCFAYD&categoryType=CODE&problemTitle=%EA%B4%84%ED%98%B8&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

 

 

2) 문제

왼쪽 괄호일 경우 스택 추가, 오른쪽 괄호일 경우 쌍을 이루는 괄호인지 비교

오른쪽 괄호가 왼쪽 괄호와 쌍을 이룰 경우 스택 가장 상위 괄호 pop

그렇지 않은 경우 탐색 종료 

 

 

 

 

3)소스  코드

t = 10 #테스트케이스가 10개이므로

for tc in range(t) :
    n = int(input()) #테스트케이스의 길이
    lst = list(map(str,input())) #테스트케이스
    stck = []

    #왼쪽 괄호
    left = ['(','{','[','<']
    #오른쪽 괄호
    right = [')','}',']','>']

    for i in range(n) :
        if lst[i] in left :
            stck.append(lst[i])
        if lst[i] in right :
            #가장 상위의 괄호값과 쌍이라면
            if right.index(lst[i]) == left.index(stck[-1]) :
                #상위의 원소 제거하기
                stck.pop()
            else : #짝이 아니면 종료
                break
        res = 0
    if len(stck) == 0 :
        res = 1

    print("#{} {}".format(tc+1,res))

 

반응형
Comments