# 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
'알고리즘' 카테고리의 다른 글
[프로그래머스] 연속 부분 수열 합의 개수 (0) | 2023.06.20 |
---|---|
[프로그래머스] H-Index (0) | 2023.06.19 |
[프로그래머스] 귤 고르기 (0) | 2023.06.13 |
[프로그래머스] 멀리 뛰기 (2) | 2023.06.13 |
[프로그래머스] N개의 최소공배수 (0) | 2023.06.13 |