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

최동혁·2022년 12월 27일
0

프로그래머스

목록 보기
40/68

풀이 방법

첫번째 로직

  • 문자열 슬라이싱을 이용해서 하나씩 회전시켜준다.

두번째 로직

  • 먼저 닫히는 괄호들 먼저 루프를 돌면서 확인 후, 닫히는 괄호라면 stack 안에 짝이 맞는 여는 괄호가 있는지 체크한다.
    • 없거나, stack이 비어있다면 그 문자는 올바른 괄호가 아니기 때문에 answer를 카운트 해주지 않는다.
    • 짝이 맞더라도 루프가 끝날때까지 계속 검사해준다.
  • 만약 닫히는 괄호가 아니라면?
    • stack에 넣어준다.

풀이 코드

def solution(s):
    answer = 0
    temp = s
    dic = {"}" : "{", ")" : "(", "]" : "["}
    for i in range(len(s)):
        temp = s[i:] + s[0 : i]
        stack = []
        answer += 1
        flag = True
        for j in temp:
            for end, start in dic.items():
                if j == end:
                    if not stack:
                        flag = False
                        break
                    else:
                        a = stack.pop()
                        if a != start:
                            flag = False
                            break
            if not flag:
                answer -= 1
                break
            if j not in dic:
                stack.append(j)
                
        if stack and flag:
            answer -= 1

    return 
profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글