[programmers/py] 괄호 회전하기

승민·2023년 7월 3일

알고리즘

목록 보기
31/171

괄호 회전하기

https://school.programmers.co.kr/learn/courses/30/lessons/76502?language=python3

문제 설명

대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요.

풀이

  1. {[(인 경우에는 arr에 넣어줍니다.
  2. }])인 경우 arr의 마지막 값과 짝이 맞으면 pop을 하고 아니면 남겨둔다.
  3. stack의 길이를 확인해서 결론을 내린다.
def solution(s):
    full = s+s
    len_s = len(s)
    
    end = ["]", "}", ")"]
    start = ["[", "{", "("]
    answer = 0
    for i in range(len_s):
        lis = full[i:i+len_s]
        arr=[]
        for l in lis:
            if l == "]" and len(arr) > 0 and arr[-1] == "[":
                arr.pop()
            elif l == "}" and len(arr) > 0 and arr[-1] == "{":
                arr.pop()
            elif l == ")" and len(arr) > 0 and arr[-1] == "(":
                arr.pop()
            else :
                arr.append(l)

        if len(arr) == 0:
            answer += 1
    return answer

0개의 댓글