Algorithm
[프로그래머스] 괄호 회전하기
kindof
2021. 7. 13. 10:18
코딩테스트 연습 - 괄호 회전하기
programmers.co.kr
올바른 괄호 문자열인지 확인하는 함수는 스택을 이용하여 작성했고, 메인 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 = {'(': ')', '{':'}', '[':']'}