https://school.programmers.co.kr/learn/courses/30/lessons/49995
자려고 했는데 카페인 때문에 잠이 안 와서 한 문제 더... 처음 볼 때는 4레벨인지 모르고 그냥 m 위치를 구해서 배열 자르고 각각의 위치에서 더했다. 내 코드의 뭐가 문제지 살펴보고 있었는데 알고 보니 문제를 잘못 이해했던 것. m 위치를 구하고 동시에 원한다면 앞과 뒤에서도 배열을 무한하게 자를 수 있다.
초과코딩으로 머리가 굳은 것인지 별 생각이 안 나서 질문하기를 봤는데 이해가 안되길래 그냥 내 마음대로 풀어봤다.
또 코드 꼬여서 이상하게 돌아가서 라이더쓰고 고쳤더니 풀어지긴 했다. 자고 싶었는데 다행이다.

using System;
public class Solution {
public int solution(int[] cookie) {
int len = cookie.Length;
int[] leftCookie = new int[len];
int[] rightCookie = new int[len];
int leftSum = 0;
int rightSum = 0;
for(int i = 0; i < len; i++){
leftSum += cookie[i];
leftCookie[i] = leftSum;
rightSum += cookie[len - i - 1];
rightCookie[len - i - 1] = rightSum;
}
int max = 0;
for(int i = 0; i < len - 1; i++){
int rightIndex = i + 1;
int leftCookieSum = leftCookie[i];
int rightCookieSum = rightCookie[rightIndex];
if(leftCookieSum == rightCookieSum){
max = Math.Max(max, rightCookieSum);
}
else{
int lplus = 0;
int rminus = len - 1;
while(lplus <= i && rminus >= rightIndex && leftCookieSum > max && rightCookieSum > max){
if(leftCookieSum > rightCookieSum){
leftCookieSum -= cookie[lplus];
lplus++;
}
else if(leftCookieSum < rightCookieSum){
rightCookieSum -= cookie[rminus];
rminus--;
}
else{
max = Math.Max(max, leftCookieSum);
break;
}
}
}
}
return max;
}
}