문제
풀이
([{)}]
와 같은 괄호는 옳바르지 않다고 판단하기 때문에, 증감이 아닌 스택으로 접근해야지 쉽게 구현할 수 있는 문제이다.
코드
from collections import deque
def bracket_check(queue: deque) -> bool:
stack = []
for x in queue:
if x == '(' or x == '[' or x == '{':
stack.append(x)
elif x == ')':
if stack:
bracket = stack.pop()
if bracket != '(':
return False
else:
return False
elif x == ']':
if stack:
bracket = stack.pop()
if bracket != '[':
return False
else:
return False
elif x == '}':
if stack:
bracket = stack.pop()
if bracket != '{':
return False
else:
return False
return True if not stack else False
def solution(s: str) -> int:
answer, cnt = 0, 0
queue = deque(s)
if len(s) % 2 != 0:
return 0
while cnt != len(s):
if bracket_check(queue):
answer += 1
x = queue.popleft()
queue.append(x)
cnt += 1
return answer
if __name__ == '__main__':
print(solution("[](){}"))
print(solution("}]()[{"))
print(solution("[)(]"))
print(solution("}}}"))
print(solution("([{)}]"))
결과
출처 & 깃허브
programmers 괄호 회전하기
github