출처: 프로그래머스 코딩 테스트 연습, [프로그래머스] 괄호 회전하기
1. 문자열을 파이썬의 리스트 슬라이딩을 통해 수월하게 회전시킨다.
2. 스택을 만들고 만약 이번에 넣을 문자가 스택의 맨위의 문자와 ( ), [ ], { } 이런식으로 되어 있다면 pop한다. 여기서 한번이 아닌 while문을 통해 pop을 시켜야 되는 줄 알았지만 한번만 pop시키는 것이 맞았다.
3. 그 이외의 경우는 스택에 값을 넣는다.
4. 반복문이 모두 끝나고 나서 스택안에 값이 없다면 올바른 문자열이다.
def solution(s):
answer = 0
for i in range(len(s)):
rotate_s = s[i:] + s[:i]
stack = []
for c in rotate_s:
if not stack: stack.append(c)
elif stack[-1] + c == '()' or stack[-1] + c == '[]' or stack[-1] + c == '{}':
stack.pop()
else:
stack.append(c)
if stack:
answer += 1
return answer
전에 풀어본 문제인데 다시 풀어보게 되었다. 저번에는 c++로 풀고 이번에는 파이썬으로 풀게 되어 휠씬 수월하게 풀 줄 알았으나 또 그렇지만도 않았다.