알고리즘
[프로그래머스] 괄호 회전하기
hminor
2023. 6. 15. 11:34
반응형
# deque를 가져와서 rotate를 사용함으로 회전을 편하게 할 수 있었음.
from collections import deque
def solution(s):
l_s = len(s)
if l_s%2: return 0
q, cnt = deque(s), 0
for _ in range(l_s):
flag, stack = True, []
for i in range(l_s):
if q[i] in ['[', '{', '(']: stack = stack + [q[i]]
else:
if stack == []:
flag = False
break
else:
if (stack[-1] == '[' and q[i] == ']') or (stack[-1] == '{' and q[i] == '}') or (stack[-1] == '(' and q[i] == ')'): stack.pop()
else:
flag = False
break
if flag and stack == []: cnt += 1
q.rotate(-1)
return cnt
# 오답
# Stack 형식으로 풀어야 되는데 이런 실수를 해버렸다.
# 이유는 바로 스택의 q의 바로 다음 요소만 비교하는게 아니라 그냥 언젠간 잘 닫히기만 하면 되기 때문.
from collections import deque
def solution(s):
if len(s)%2: return 0
q, cnt = deque(s), 0
for _ in range(len(s)):
flag = True
for i in range(len(s)//2):
if not ((q[i*2] == '[' and q[i*2+1] == ']') or (q[i*2] == '{' and q[i*2+1] == '}') or (q[i*2] == '(' and q[i*2+1] == ')')):
flag = False
break
if flag: cnt += 1
q.rotate(-1)
return cnt