상상쓰

[프로그래머스] 괄호 회전하기 본문

Coding Test

[프로그래머스] 괄호 회전하기

상상쓰 2021. 6. 1. 11:19

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

 

코딩테스트 연습 - 괄호 회전하기

 

programmers.co.kr

 

deque 에 rotate 라는 함수가 있어서 s 의 길이 동안 위치를 바꿔가며 s 가 올바른 괄호 문자열인지 검사해준다.

stack 에는 여는 괄호를 넣어주고 닫는 괄호가 나왔을 때 stack 의 마지막 괄호랑 비교해서 짝이 맞는지 검사해주면 올바른 괄호 문자열인지 알 수 있다.

 

from collections import deque

def solution(s):
    answer = 0
    n = len(s)
    s = deque(s)
    dic = {')' : '(', '}' : '{', ']' : '['}
    
    for i in range(n):
        if i > 0:
            s.rotate(-1)
        
        stack = []
        t =  True
        
        for j in s:
            if j in ['(', '{', '[']:
                stack.append(j)
            else:
                if len(stack) == 0:
                    t = False
                    break
                else:
                    if stack.pop() != dic[j]:
                        t = False
                        break
                        
        if t and len(stack) == 0:
            answer = answer + 1
                        
    return answer

print(solution('[](){}')) # 3
Comments