Search
Duplicate

괄호 회전하기

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

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