https://school.programmers.co.kr/learn/courses/30/lessons/76502#
1. 해결방법
Queue와 Stack를 둘 다 사용해야 한다.
먼저 파이썬의 deque() 메서드와 rotate()메서드를 이용해서 for문을 이용해서 괄호를 한 칸씩 움직이는 로직을 구성한다.
그 다음 for문에서 stack 원리처럼 괄호를 하나하나 올바른 괄호인지 체크해야한다.
(, [, { 가 첫 괄호이면 append하고 아니라면 그거는 올바른 괄호가 아닌 문자열로 반환을 한다.
pop()을 진행할 때는 pop()메서드를 적용시킨 문자와 검사중인 문자를 비교해서 문제가 없어야 올바른 괄호로 인식하는 로직이다.
2. 정답코드
def solution(s):
from collections import deque
s = deque(s)
answer = 0
for i in range(len(s)):
s.rotate(-1)
stack = []
for ch in s:
if ch == '(' or ch == '{' or ch == '[':
stack.append(ch)
else:
if not stack:
break
rear = stack.pop()
if ch == ')' and rear != '(':
break
elif ch == '}' and rear != '{':
break
elif ch == ']' and rear != '[':
break
else:
if len(stack) == 0:
answer += 1
return answer
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.2 피로도 (0) | 2022.09.28 |
---|---|
[프로그래머스] Lv.2 위장 (0) | 2022.09.27 |
[프로그래머스] Lv.2 H-Index (0) | 2022.09.26 |
[프로그래머스] Lv.2 이진 변환 반복하기 (0) | 2022.09.26 |
[프로그래머스] Lv.1 소수 찾기 (2) | 2022.09.26 |