[PYTHON/파이썬] level 2 괄호회전하기 - deque

     

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

     

    프로그래머스

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

    programmers.co.kr

    문제 풀이

    • 문자열을 최대 문자열 길이까지 순차적으로 회전시켰을 때, 올바른 괄호 문자열이 되게 하는 x의 개수를 구하는 문제

    soltuion - 성공

    from collections import deque
    
    # 올바른 문자열인지 확인하는 함수(올바른 문자열이면 1를 올바르지 않다면 0을 반환함)
    def is_bracket_str(target_str):
        bracket = {'(':')','{':'}','[':']'}
        stack = []
    
        for s in target_str:
            # 열린 괄호라면
            if s in bracket.keys():
                # 스택에 추가함
                stack.append(s)
    
            # 닫힌 괄호라면
            else:
              # 빈 스택이 아니라면
                if stack:
                    # 스택에 넣은 최신 요소의 짝과 검사하고 있는 괄호가 같다면
                    if bracket[stack[-1]] == s:
                        # 스택에 최신 요소를 제거한다.
                        stack.pop()
                    # 스택에 넣은 최신 요소의 짝과 검사하고 있는 괄호가 같지 않다면
                    else:
                        # 반복을 중단한다.
                        stack = True
                        break
                # 빈 스택이면  
                else:
                    # 반복을 중단한다.
                    stack = True
                    break
    
        # 빈 스택이면 올바른 괄호 문자열    
        if not stack:
            return 1
        else:
            return 0
    
    def solution(s):
        count = 0
        target = deque(s)
        max_rotate = len(target)
        # deque의 rotate을 활용해서 왼쪽으로 한칸씩 회전하면서 올바른 문자열인지 확인하고 카운트 한다.
        while max_rotate > 0:
            target.rotate(-1)
            count += is_bracket_str(target)
            max_rotate -= 1
        return count

    이러한 알고리즘으로 다른 괄호문제가 궁금하시다면 아래의 글을 참고해주세요!

    2023.02.09 - [algorithm/백준] - [PYTHON/파이썬] 4949 균형잡힌 세상 - ()[]{}<>

     

    [PYTHON/파이썬] 4949 균형잡힌 세상 - ()[]{}<>

    https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글

    menduck.tistory.com

     

    댓글