티스토리 뷰

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

 

프로그래머스

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

programmers.co.kr

from collections import deque
def solution(s):
    answer = 0
    Q = deque(s)
    for i in range(len(s)):
        Q.append(Q.popleft())
        if check(Q): 
            answer += 1
    return answer
def check(Q):
    stack = []
    for q in Q:
        if q in ('(', '[', '{'): stack.append(q)
        else:
            if not stack: return False
            top = stack.pop()
            if q == ')' and top != '(': return False
            if q == '}' and top != '{': return False
            if q == ']' and top != '[': return False
    if stack: return False
    return True

문제를 보고 스택을 써야겠다! 라는 생각이 났다. 괄호를 회전하기 위해 deque의 popleft와 append를 사용했다.

check함수를 통해 회전한 괄호 문자열이 올바른지 검사하였다. 해당 함수 내에서는 스택을 사용하여 닫는 괄호가 나왔을 때, 스택의 top이 해당 괄호를 여는 것인지 검사한다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함