프로그래머스/lv.2

괄호 회전하기

bingual 2024. 2. 6. 15:52
반응형

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제풀이

from collections import deque


def solution(s):
    answer = 0

    que = deque(s)
    for _ in range(len(s)):
        if is_valid("".join(que)):
            answer += 1
        que.rotate(-1)

    return answer


def is_valid(s):
    patterns = {")": "(", "]": "[", "}": "{"}
    stack = []

    for char in s:
        if char in patterns.values():
            stack.append(char)
        elif char in patterns.keys():
            if not stack or stack.pop() != patterns[char]:
                return False
    return not stack