[PS, Algorithm] - 괄호 회전하기(코딩테스트 연습, LEVEL 2)

조재현·2022년 12월 14일
0
post-custom-banner

📒문제


🎈풀이

from collections import deque

def solution(s):
    answer = 0
    
    def rotateString(s, x):
        if x == 0: return s
        else: return s[1:] + s[0] 
    
    def rightPair(ch):
        if ch == ')': return '('
        elif ch ==']': return '['
        elif ch == '}': return '{' 
    
    def isRightString(s):
        stack = deque()
        
        for i in range(len(s)):
            if s[i] == '[' or s[i] == '(' or s[i] =='{':
                stack.append(s[i])
            else:
                if stack and (stack[-1] == rightPair(s[i])):
                    stack.pop()
                else: return False
        
        if stack: return False #len(s) == 1인걸 걸러내기 위함
        else: return True
    
    for i in range(len(s)):
        s = rotateString(s, i)

        if isRightString(s): answer += 1
    return answer

딱히 어려운 점이 없었다. 괄호 회전하는건 string slicing을 이용해 구현했고, 올바른 괄호 문자열을 찾는 건 늘 그랬듯이 스택을 사용하여 구현해줬다. isRightString에서 stack이 비어있지 아닌지를 판단하는 건 "("과 같이 문자열의 길이가 1인 경우를 대비하여 만들어주었다.

profile
꿈이 많은 개발자 지망생
post-custom-banner

0개의 댓글