728x90
https://programmers.co.kr/learn/courses/30/lessons/76502?language=python3#
접근
python의 deque를 통해 괄호열을 괄호열의 길이만큼 회전하였다.
이후 스택을 활용하여 올바른 괄호열인지 판단하였다.
구현
- 먼저 입력받은 괄호열을 deque에 저장한다.
- 그리고 괄호열의 길이만큼 회전한다.
- 회전한 괄호열에 대해 올바른 괄호열인지 판단하기위해 스택을 활용한다.
- 여는 괄호일 때 스택에 push하고
- 닫는 괄호일 때는 스택의 top을 확인하여 짝이 맞을 때 pop한다.
- 이 과정에서 스택에 비어있는데 닫는 괄호가 나오면 탐색을 종료하고
- 탐색을 끝까지 했을 때 스택이 비어있다면 최종해를 증가한다.
from _collections import deque
def solution(ss):
answer = 0
dq = deque()
for s in ss:
dq.append(s)
for _ in range(len(ss)):
# 한 칸 회전
s = dq.popleft()
dq.append(s)
# 스택 생성 -> 올바른 괄호 판단
stack = []
for s in dq:
if s == '[' or s == '(' or s == '{':
stack.append(s)
else:
if not stack:
break
if s == ']' and stack[-1] == '[':
stack.pop()
elif s == ')' and stack[-1] == '(':
stack.pop()
elif s == '}' and stack[-1] == '{':
stack.pop()
else:
break
else:
if not stack:
answer += 1
return answer
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[Level 1] 키패드 누르기 (0) | 2021.07.31 |
---|---|
[Level 1] 숫자 문자열과 영단어 (0) | 2021.07.31 |
[Level 3] 베스트 앨범 (0) | 2021.06.07 |
[Level 2] 게임 맵 최단거리 (0) | 2021.06.07 |
[Level 3] 섬 연결하기 (0) | 2021.05.12 |