[프로그래머스 월간 코드 챌린지 시즌 2] 괄호 회전하기

Suntory·2021년 4월 19일
0

두 번째 문제는 괄호 회전하기입니다.

괄호 문자열이 올바른 지 판단하는 문제 유형인데 회전하는 내용이 추가 되었습니다.

어떻게 판별할 지 기발한 아이디어가 떠오르지 않아 단순한 브루트포스로 접근하였고

다행히 시간 내에 통과했습니다.

하지만 더 좋은 아이디어가 있을 것 같다는 예감이 듭니다.

# 전달받은 문자열이 올바른지 판별
def is_right_prnt(s):
    right_prnt = {'{' : '}',
                 '(' : ')',
                 '[' : ']'}
    
    stack = []

    for char in s:
        if stack:
            if char == right_prnt.get(stack[-1]):
                stack.pop()
            else:
                # 예외 처리
                if char in '])}':
                    return False
                else:
                    stack.append(char)
        else:
            # 예외 처리
            if char in '])}':
                return False
            else:   
                stack.append(char)
        
    return False if stack else True
    
def solution(s):
    answer = 0
    # 회전된 문자열 저장할 buffer.
    buffer = ''
    for i in range(len(s)):
        buffer = s[i:] + s[:i]
        
        if is_right_prnt(buffer):
            answer += 1
        
    
    return answer

시간 복잡도 : O(n^2), n : 문자열의 길이

profile
천천히, 하지만 꾸준히 그리고 열심히

0개의 댓글