[프로그래머스] 괄호 회전하기 (Python)
2022. 5. 13. 02:51ㆍ알고리즘 & 자료구조
반응형
💁🏻 나의 풀이
from collections import deque
def is_correct(s):
stack = deque()
for c in s:
stack.append(c)
if len(stack) > 1:
if stack[-2] + stack[-1] in ['[]', '{}', '()']:
stack.pop()
stack.pop()
return len(stack) == 0
def solution(s):
answer = 0
s = deque(list(s))
for i in range(len(s)):
s.rotate(1)
if is_correct(s):
answer += 1
return answer
from collections import deque
def is_correct(s):
stack = deque()
for c in s:
if c in ['(', '{', '[']:
stack.append(c)
elif not stack or stack.pop() + c not in ['()', '{}', '[]']:
return False
return len(stack) == 0
def solution(s):
answer = 0
s = deque(list(s))
for i in range(len(s)):
s.rotate(1)
if is_correct(s):
answer += 1
return answer
- 괄호 문자열을 ‘회전’하기 때문에
deque.rotate
함수를 활용 - 회전할 때마다 해당 괄호 문자열이 올바른지 체크한다 (스택 활용)
📚 What I Learned
스택으로 괄호를 체크할 때 더 효율적인 방법
- 무조건 끝까지 검사해서 스택 비어있는 여부로 검사하는게 아니라
- 여는 괄호면
stack.append
, 닫는 괄호면stack.pop
을 실행 - 만약 pop에서 list가 비어있거나 알맞은 쌍이 아니라면 바로 올바름 여부를 판별할 수 있음
반응형