rueki

프로그래머스 LV2. 괄호회전하기 본문

프로그래머스 연습

프로그래머스 LV2. 괄호회전하기

륵기 2022. 10. 7. 23:38
728x90
반응형

올바른 괄호 문제의 확장판 느낌이다. 좌괄호인 경우에 스택 넣고 반대의 경우 pop 하는 식으로 접근하였고

좌측으로 회전하는 것은 앞 글자를 뒤로 붙이는 식으로 하였다.

 

고려해야할 조건

- 문자열 길이 // 2 -> 최대 만들 수 있는 괄호 개수

- 문자열 길이 홀수면 애초에 괄호 생성 불가

 

 

def solution(s):
    answer = 0
    
    if len(s) % 2 != 0:
        answer = 0
        return answer
    else:
        for x in range(0, len(s)):
            if x>0:
                f = list(s)[0]
                s = list(s)[1:]
                s.append(f)
            else:
                s = list(s)

            cnt = 0 
            galho_left = []
            for g in s:

                if g == "[" or g == "(" or g == "{":
                    galho_left.append(g)


                elif len(galho_left) > 0:
                    if galho_left[-1] == "{" and g == "}":
                        galho_left.pop()
                        cnt += 1
                    elif galho_left[-1] == "[" and g == "]":
                        galho_left.pop()
                        cnt += 1
                    elif galho_left[-1] == "(" and g == ")":
                        galho_left.pop()
                        cnt += 1


            if cnt == len(s) // 2 and not galho_left:
                answer += 1
        
        
        
            galho_left = []
    
    return answer
728x90
반응형
Comments