[프로그래머스] 괄호 회전하기
kindof
·2021. 7. 13. 10:18
올바른 괄호 문자열인지 확인하는 함수는 스택을 이용하여 작성했고, 메인 solution 함수에서는 문자열을 회전하면서 올바른 괄호열 때 answer를 1씩 증가시키도록 했습니다.
[풀이]
# 올바른 괄호 문자열인지 확인하는 함수
def isValidBusket(str):
stack = []
for s in str:
if len(stack) == 0:
stack.append(s)
else:
# 스택 마지막 원소가 여는 괄호이면서 현재 문자는 닫는 괄호
if stack[-1] in bucketDict and s not in bucketDict:
# 두 괄호가 매치되지 않으면 False
if s != bucketDict[stack[-1]]:
return False
# 두 괄호가 매치되면 마지막 원소를 pop
else:
stack.pop()
# 스택 마지막과 현재 문자가 둘 다 여는 괄호면 append
elif stack[-1] in bucketDict and s in bucketDict:
stack.append(s)
# 스택 마지막이 닫는 괄호면 올바른 괄호 아님
else:
return False
return True if len(stack) == 0 else False
def solution(s):
answer = 0
# 왼쪽으로 회전시켜보기
for x in range(len(s)):
rotated = s[x:] + s[:x]
if isValidBusket(rotated):
answer += 1
return answer
# 괄호 대응 정보를 가진 딕셔너리
bucketDict = {'(': ')', '{':'}', '[':']'}
'Algorithm' 카테고리의 다른 글
[프로그래머스/파이썬(Python)] 모두 0으로 만들기 (0) | 2021.07.15 |
---|---|
[프로그래머스/파이썬(Python] 이진 변환 반복하기 (0) | 2021.07.14 |
[프로그래머스] 2개 이하로 다른 비트 (0) | 2021.07.13 |
[프로그래머스(Programmers)] 게임 맵 최단거리 (0) | 2021.07.12 |
[프로그래머스] 쿼드압축 후 개수 세기 (0) | 2021.07.11 |