문제: https://school.programmers.co.kr/learn/courses/30/lessons/49995

문제 접근 알고리즘: 투포인터, 누적합(슬라이딩 윈도우 변형)
문제의 본질
전략은 간단했다.
이유는 과자 수는 음수가 없으므로, 합이 작은 쪽을 늘리는 방식이 항상 올바르게 수렴하기 때문이다.
풀이 전략은 평범한 투포인터 문제와 같다.
경계점 m을 왼쪽 구간의 끝으로 고정
초기 상태
l = mr = m+1left_sum = cookie[l]right_sum = cookie[r]포인터 이동 규칙
left_sum == right_sumleft_sum < right_sum, left_sum > right_sum종료 조건
풀이
def solution(cookie):
n = len(cookie)
answer = 0
for m in range(n-1):
l = m
r = m+1
left_sum = cookie[l]
right_sum = cookie[r]
while True:
if left_sum == right_sum:
answer = max(answer, left_sum)
# 양 쪽 모두 확장
l -= 1
r += 1
if l < 0 or r >= n:
break
left_sum += cookie[l]
right_sum += cookie[r]
elif left_sum < right_sum:
# 왼쪽 확장
l -= 1
if l < 0:
break
left_sum += cookie[l]
else:
# 오른쪽 확장
r += 1
if r >= n:
break
right_sum += cookie[r]
return answer