
function solution(cap, n, deliveries, pickups) {
var answer=0;
/*
if(cap<1 || cap>50) return;
if(n<1|| n>100000) return;
if(deliveries.length!= pickups.length ||
deliveries.length!=n || pickups.length!=n) return
*/
const find_index= function(del,pic,indexx){
for(var i=indexx; i>=0; i--){
if(del[i]!=0 || pic[i]!=0){
return i;
}
else{
deliveries.pop();
pickups.pop();
}
}
}
var total_delver= deliveries.reduce((ac,cur)=> ac+cur);
var total_pic= pickups.reduce((ac,cur)=> ac+cur);
//console.log(total_delver,total_pic )
var index=n-1;
while(total_delver>0 || total_pic>0){
var plus_delver=0;
var plus_pick=0;
var in_index=find_index(deliveries,pickups,index);
index=in_index;
answer+= (in_index+1)*2;
for(var ig=in_index; ig>=0; ig--){
if(plus_delver>cap && plus_pick>cap){
break;
}
if(plus_delver<cap){
plus_delver+=deliveries[ig];
total_delver-=deliveries[ig];
deliveries[ig]=0;
//여기서 더했는데..? 작아졋다면
if(plus_delver>cap){
deliveries[ig]=plus_delver-cap
total_delver+=(plus_delver-cap)
}
}
if(plus_pick<cap){
plus_pick+=pickups[ig];
total_pic-=pickups[ig];
pickups[ig]=0;
//여기서 더했는데..? 작아졋다면
if(plus_pick>cap){
pickups[ig]=plus_pick-cap
total_pic+=(plus_pick-cap)
}
}
}
}
return answer;
}
완전 탐색으로 수식을 짰더니

아무리 해도 3개 부분은 시간 초가가 났다.
이방법은 아닌듯한다.
