title: "[프로그래머스] 연속 펄스 부분 수열의 합 Python 파이썬 해설 (Level 3) - 이도훈"
cleanUrl: "programmers/161988"
description: "프로그래머스 Level 3 문제 [연속 펄스 부분 수열의 합]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

def max_slice_sum(nums):
    cache = [nums[0]]
    for i in range(1, len(nums)):
        cache.append(max(0, cache[-1]) + nums[i])
    return max(cache)
    
def solution(sequence):
    # pulse 배열을 구성한다
    pulse1, pulse2 = [1], [-1]
    for i in range(1, len(sequence)):
        pulse1.append(pulse1[-1] * -1)
        pulse2.append(pulse2[-1] * -1)
    
    nums1 = [num * p for num, p in zip(sequence, pulse1)]
    nums2 = [num * p for num, p in zip(sequence, pulse2)]
    answer = max(max_slice_sum(nums1), max_slice_sum(nums2))
    return answer

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges