사실 dq 몰라도 string으로도 쉽게 풀 수 있긴 했을 듯 str[1:] + str[:1] 이런식으로 반복문 돌면서 str 회전 시켰으면 될 듯?? → 그 방식으로도 풀었음!!
📖풀이
📎deque
from collections import dequedef solution(s): def check_str(dq): st = [] for d in dq: if d == '(' or d == '[' or d == '{': st.append(d) elif st and (st[-1] == '(' and d == ')'): st.pop() elif st and (st[-1] == '[' and d == ']'): st.pop() elif st and (st[-1] == '{' and d == '}'): st.pop() else: return False return True if not st else False n = len(s) cnt = 0 for i in range(n): dq = deque(s) dq.rotate(-i) flag = check_str(dq) if flag: cnt += 1 return cnt
📎문자열
def solution(s): def check_str(bracket): st = [] for b in bracket: if b == '(' or b == '[' or b == '{': st.append(b) elif st and (st[-1] == '(' and b == ')'): st.pop() elif st and (st[-1] == '[' and b == ']'): st.pop() elif st and (st[-1] == '{' and b == '}'): st.pop() else: return False return True if not st else False cnt = 0 for i in range(len(s)): cnt += check_str(s[i:]+s[:i]) return cnt
📖What I learned
파이썬의 bool타입은 int에서 파생된 클래스라서 연산 가능
→ True 1 False 0으로 취급되어 계산됨