문제 풀이

1. 문자열의 길이만큼, 주어진 문자열의 맨 앞에 값을 맨 뒤로 보내야 하므로 데크 자료구조를 사용

2. 변환된 문자열이 올바른지 확인하기 위해 스택 자료구조 사용

  - 괄호 형태들을 dictionary로 저장하여 가독성을 높임.

코드 

  
from collections import deque
bracket_form_dict = {"(": ")", "{": "}", "[": "]"}

def is_right_form(s):
    stack = []
    for bracket in s:
        if bracket in bracket_form_dict:
            stack.append(bracket)
        elif stack and bracket_form_dict[stack[-1]] == bracket:
            stack.pop()
        else:
            return False
    if not stack:
        return True


def solution(s):
    answer = 0
    s_deque = deque(s)
    for _ in range(len(s)):
        s_deque.append(s_deque.popleft())
        if is_right_form(s_deque):
            answer += 1
    return answer

+ Recent posts