Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[프로그래머스] Lv.2 괄호 회전하기 [Python, 파이썬] 본문
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/76502
- 🔑 : 문자열 회전, 스택
def solution(s):
answer = 0
for i in range(len(s)):
x = s[i:] + s[:i] # 문자열 회전해서 x에 저장
stack = [] # 스택으로 사용할 빈 리스트 생성
st = -1 # 스택의 시작점 -1로 지정
for j in range(len(x)): # 회전한 문자열을 반복
if stack == [] or st == -1: # 스택이 비었거나 시작점이 -1이면 무조건 하나 추가
stack.append(x[j]) # 스택에 괄호 하나 넣기
st += 1 # 스택 높이 올리기
elif x[j] == ")" : # 닫는괄호 ) 를 만나면
if stack[st] == "(": # 현재 스택의 위치가 ( 인지 확인
st -= 1 # 짝이 맞으니까 스택 하나 내리고
stack.pop() # ( 를 스택에서 빼냄
else: break # 짝이 안맞으면 더 볼 필요 없이 브레이크
elif x[j] == "]" : # 위 () 방식과 마찬가지
if stack[st] == "[":
st -= 1
stack.pop()
else: break
elif x[j] == "}" : # 위 () 방식과 마찬가지
if stack[st] == "{":
st -= 1
stack.pop()
else: break
else: # 닫는 괄호가 아니고 여는 괄호는 스택에 넣기
stack.append(x[j])
st += 1
if st == -1: # 반복 다 해서 스택이 비어있으면 올바른 괄호란 뜻
answer += 1
return answer
'프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.3 단어 변환 [Python, 파이썬] (0) | 2023.06.05 |
---|---|
[프로그래머스] Lv.2 [1차] 캐시 [Python, 파이썬] (0) | 2023.05.30 |
[프로그래머스] Lv.2 구명보트 [Python, 파이썬] (0) | 2023.05.16 |
[프로그래머스] [KAKAO] Lv.2 주차 요금 계산 [Python, 파이썬] (0) | 2023.04.13 |
[프로그래머스] [KAKAO] Lv.1 신고 결과 받기 [Python, 파이썬] (0) | 2023.04.10 |
Comments