https://programmers.co.kr/learn/courses/30/lessons/76502?language=python3
코딩테스트 연습 - 괄호 회전하기
programmers.co.kr
def solution(s):
answer= 0
#우선 리스트로 변경
temp=list(s)
#리스트의 길이만킅 for문을 돌려 리스트 회전
for _ in range(len(s)):
stack = []
# 스택에 아무것도 없으면 괄호를 추가 같으면 제거
for j in range(len(temp)):
if len(stack) >0 :
if stack[-1] == "(" and temp[j]==")":
stack.pop()
elif stack[-1] =="[" and temp[j]=="]":
stack.pop()
elif stack[-1] == "{" and temp[j]=="}":
stack.pop()
# 만약에 마지막에 있는 문자가 다르면 추가
else:
stack.append(temp[j])
# 길이가 0이면 추가
else:
stack.append(temp[j])
# for문 다 돌았는데 길이 0 이면 정답하나 추가
if len(stack) == 0:
answer+=1
# 첫번째꺼 맨뒤로 보내고 다시 위에꺼 반복
temp.append(temp.pop(0))
return answer
생각보다 낯설어서 오래 걸렸다.
스택의 원리를 생각하고 풀면 쉽게 풀 수 있다.
반응형
'코딩 > 프로그래머스 lv2' 카테고리의 다른 글
[프로그래머스] 짝지어 제거하기 - 파이썬 (0) | 2021.10.30 |
---|---|
[프로그래머스] 피로도 - 파이썬 (0) | 2021.10.30 |
[프로그래머스] 거리두기 확인하기- 파이썬 (0) | 2021.08.20 |
[프로그래머스] 괄호 변환 - 파이썬 (0) | 2021.08.18 |
[프로그래머스] 프린터 -파이썬 (0) | 2021.08.18 |