문제 풀이
1. 문자열의 길이만큼, 주어진 문자열의 맨 앞에 값을 맨 뒤로 보내야 하므로 데크 자료구조를 사용
2. 변환된 문자열이 올바른지 확인하기 위해 스택 자료구조 사용
- 괄호 형태들을 dictionary로 저장하여 가독성을 높임.
코드
from collections import deque
bracket_form_dict = {"(": ")", "{": "}", "[": "]"}
def is_right_form(s):
stack = []
for bracket in s:
if bracket in bracket_form_dict:
stack.append(bracket)
elif stack and bracket_form_dict[stack[-1]] == bracket:
stack.pop()
else:
return False
if not stack:
return True
def solution(s):
answer = 0
s_deque = deque(s)
for _ in range(len(s)):
s_deque.append(s_deque.popleft())
if is_right_form(s_deque):
answer += 1
return answer
'코딩 테스트' 카테고리의 다른 글
[구간합][백준][11659] 구간 합 구하기 4 (0) | 2021.05.11 |
---|---|
[구현][백준, 1157] 단어 공부 (0) | 2021.05.11 |
[DP][백준, 12865] 평범한 배낭 (0) | 2021.04.23 |
[DP][프로그래머스] 거스름돈 (0) | 2021.04.22 |
[그리디][백준, 1027] 토너먼트 (0) | 2021.04.20 |