프로그래머스

[프로그래머스] 괄호 회전하기 (파이썬)

sami355 2023. 4. 4. 13:12

문제

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

 

프로그래머스

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

programmers.co.kr

풀이

문자열을 이용한 문제를 몇번 풀어보았다면 쉽게 풀리는 문제였다. 나는 다음과 같이 문제를 접근했다.

1. 문자열을 회전 시켜 새로운 문자열을 만든다.

2. 새로운 문자열에 대해서 올바른 괄호 문자열인지 판별한다

2-1. 올바른 괄호 문자열일 경우 answer+1를 해준다.

2-2. 올바른 문자열이 아닐경우 넘어간다.

코드

def solution(s):
    answer = 0

    for i in range(len(s)):
        if isCorrect(s):
            answer += 1
        c = s[0]
        s = s[1:]+ c
            
    return answer


def isCorrect(s):
    if len(s) == 1:
        return False
    
    st = []
    st.append(s[0])
    s = s[1:]
    
    for element in iter(s):
        if st and st[-1] == '(' and element == ')':
            st.pop()

        elif st and st[-1] == '[' and element == ']':
            st.pop()
        
        elif st and st[-1] == '{' and element == '}':
            st.pop()
        
        else:
            st.append(element)
            
    if st: return False
    elif not st: return True