문제 설명 및 제한사항
아이디어 및 해결 방법
코드
def shift(s, i):
tmp = list(s)
return tmp[i:] + tmp[:i]
def solve(s):
stack = []
for paren in s:
if paren in ['[', '{', '(']:
stack.append(paren)
else:
if len(stack) == 0:
return False
elif paren == ']' and stack[-1] == '[':
stack.pop()
elif paren == '}' and stack[-1] == '{':
stack.pop()
elif paren == ')' and stack[-1] == '(':
stack.pop()
else:
return False
# stack에 괄호가 남아있으면 올바른 괄호 문자열이 아닙니다.
return len(stack) == 0
def solution(s):
# 문제가 크지 않아서 brute-force로 해결합니다.
# 문자열을 왼쪽으로 x 만큼 회전시키는 함수 shift와,
# 올바른 괄호 문자열인지 판단하는 solve함수 두개만 구현하면 됩니다.
return sum(solve(shift(s, x)) for x in range(len(s)))
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges