본문 바로가기
코딩테스트 연습

[Programmers] 괄호 회전하기

by eddypark 2023. 9. 12.

def solution(s):
    answer = 0
    tmp = ""
    new_s = s
    while tmp != s:
        tmp = new_s[1:] + new_s[0:1] // 문자열 시프트
        new_s = tmp
        stack = []
        for i in range(len(new_s)):
        if ( new_s[i] == ']' or new_s[i] == '}' or new_s[i] == ')' ) and len(stack) == 0:
          stack.append(1) // stack에 남은 문자열을 확인하기 위해
          break
        elif (new_s[i] == ']' and stack[-1] == '[') and len(stack) != 0:
          stack.pop()
        elif (new_s[i] == '}' and stack[-1] == '{') and len(stack) != 0:  
          stack.pop()
        elif (new_s[i] == ')' and stack[-1] == '(') and len(stack) != 0:
          stack.pop()
        else:
          stack.append(new_s[i])
      if len(stack) == 0:
        answer +=1
    return answer

1. 문자열 시프트

2. Stack 이용하여 append, pop 진행.

3. 마지막 Stack의 길이가 남으면 짝이 안 맞는 괄호, 길이가 0이면 짝이 맞는 괄호

3-1. 처음부터 짝이 안맞는 괄호가 나오면 ( ex. ], }, ) ) 그대로 Stack의 길이도 0이라 이러한 Case에서는 1을 집어넣어 Stack의 길이를 0이 아니게 하여 판단한다.

'코딩테스트 연습' 카테고리의 다른 글

[Softeer] 지도 자동 구축  (0) 2023.09.14
[Softeer] 비밀 메뉴  (0) 2023.09.13
[Programmers] 캐시  (0) 2023.09.11
[Programmers] n^2 배열 자르기  (0) 2023.09.08
[Programmers] 땅따먹기  (0) 2023.09.08