티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/76502
from collections import deque
def solution(s):
answer = 0
Q = deque(s)
for i in range(len(s)):
Q.append(Q.popleft())
if check(Q):
answer += 1
return answer
def check(Q):
stack = []
for q in Q:
if q in ('(', '[', '{'): stack.append(q)
else:
if not stack: return False
top = stack.pop()
if q == ')' and top != '(': return False
if q == '}' and top != '{': return False
if q == ']' and top != '[': return False
if stack: return False
return True
문제를 보고 스택을 써야겠다! 라는 생각이 났다. 괄호를 회전하기 위해 deque의 popleft와 append를 사용했다.
check함수를 통해 회전한 괄호 문자열이 올바른지 검사하였다. 해당 함수 내에서는 스택을 사용하여 닫는 괄호가 나왔을 때, 스택의 top이 해당 괄호를 여는 것인지 검사한다.
'PS > Programmers Python' 카테고리의 다른 글
프로그래머스(파이썬) - 멀리 뛰기 (0) | 2023.05.08 |
---|---|
프로그래머스(파이썬) - 튜플 (0) | 2023.05.05 |
프로그래머스(파이썬) - 예상 대진표 (0) | 2023.05.01 |
프로그래머스(파이썬) - 방문 길이 (0) | 2022.12.27 |
프로그래머스(파이썬) - N개의 최소공배수 (0) | 2022.12.27 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 1764
- 스택
- 브루트포스
- 조합
- 덱
- dp
- 10816
- 파이썬
- 자료구조
- 딕셔너리
- 빌림
- 프로그래머스
- 백트래킹
- 2805
- 11051
- 삼성청년소프트웨어아카데미
- 수학
- 1358
- 1715
- 1182
- 백준
- 10845
- 10815
- 큐
- 싸피
- 1759
- 10971
- 러스트
- heapq
- 17478
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함