본문 바로가기
코딩테스트

[파이썬] 괄호 회전하기 - 월간 코드 챌린지 시즌2 [CODING TEST #42]

by ALTERww 2022. 8. 6.
320x100

https://school.programmers.co.kr/learn/courses/30/lessons/76502

 

괄호 문자열 문제는 Stack을 이용하는 대표적인 유형 중 하나이다.

 

stack = [ ] 를 for문 외부에 정의했다가 테스트 케이스 성공률 21%를 맛보았다.

그런데 어째서 샘플 4개는 전부 통과했던걸까... 억울하다고..

 

def solution(s):
    answer = 0
    gwalho_list = ['(','[','{']
    pair = {')':'(', ']':'[', '}':'{'}
    
    for i in range(len(s)):   
        stack = []
        flag = True
        temp = s[0]
        s = s[1:] + temp # 왼쪽으로 밀기
        for alpha in s:
            if alpha in gwalho_list: # ([{
                stack.append(alpha) # push
            else: # )]}
                # stack의 top과 쌍이 맞아야 함
                if len(stack) > 0 and stack[-1] == pair[alpha]: 
                    stack.pop()  # pop
                # 쌍이 맞지 않거나, stack이 없는데 닫는 괄호가 오면 틀린 문자열임
                else:  
                    flag = False
        # s를 다 돌았는데 stack이 비었으면, 올바른 문자열임
        if len(stack) == 0 and flag == True:
            answer += 1
                    
    return answer

 

댓글