728x90
😉 아이디어
1. _!1 or -1!_로 시작하는 펄스수열이 적용된 리스트 생성
2. 리스트 순회 중 최대값 기록 (순회 중인 값을 더해 음수의 값이 나온다면 기록하지 않고 초기화)
3. 두 수열에서 최대값을 비교하고 더 큰 값을 반환
😉 풀이
def solution(sequence):
answer = 0
p1 = []
p2 = []
val = 1
for i, s in enumerate(sequence):
p1.append(val * s) # 1로 시작하는 시퀀스
p2.append(-val * s) # -1로 시작하는 시퀀스
val = val * -1
p1MaxSum = calculateMaxSum(p1)
p2MaxSum = calculateMaxSum(p2)
print(f'p1MaxSum = {p1MaxSum}, p2MaxSum = {p2MaxSum}')
return max(p1MaxSum, p2MaxSum)
def calculateMaxSum(arr):
maxVal = 0
summ = 0
for i in range(len(arr)):
nowVal = arr[i]
summ = summ + nowVal
if summ < 0:
summ = 0
maxVal = max(maxVal, summ)
return maxVal
✔️ 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/84021