[Codility][PrefixSums] 한정된 move에서 가장 큰 배열합 찾기
                                            
                                                
                                                
                                                
                                                
                                                
                                                 8029 단어  AlgorithmscodilityAlgorithms
                    
문제
배열 A, 스타트포인트 s, 무브 m이 주어졌을 때 배열 A의 s부터 m만큼 움직여서 얻을 수 있는 가장 큰 배열합을 구하라.
예) A = [2, 3, 7, 5, 1, 3, 9], s=4, m=6

이 때 인덱스 이동은 4->3->2->3->4->5->6이고 값은 7+5+1+3+9 = 25이다.
분석

- prefix_sum : 0부터 i번째 원소까지의 합으로 구성된 배열
 - count_total(pref, left_pos, right_pos) : left_pos부터 right_pos까지의 합
 - 첫번째 for loop에서 시작점부터 왼쪽을 점차 늘려가는 방식으로 탐색
 - 두번째 for loop에서 시작점부터 오른쪽을 점차 늘려가는 방식으로 탐색
 - 두개의 for loop에서 나온 결과중 최대값을 return
 
코드
const solution = (A, k, m) => {
  let result = Number.NEGATIVE_INFINITY;
  let pref = prefixSum(A);
  for(let i=0; i<= Math.min(m, k); i++){
    let leftPos = k-i;
    let rightPos = Math.min(A.length-1, k+m - 2*i);
    //console.log(leftPos, rightPos);
    let sum = leftPos > 0 ? pref[rightPos]-pref[leftPos-1] : pref[rightPos];
    result = Math.max(result, sum);
  }
  for(let i=0; i<= Math.min(m, A.length- k-1); i++){
    let leftPos = Math.max(0, k - m + 2 * i);
    let rightPos = k+i;
    let sum = leftPos > 0 ? pref[rightPos]-pref[leftPos-1] : pref[rightPos];
    result = Math.max(result, sum);
  }
  
  return result;
}
const prefixSum = A => {
  let sum = 0;
  return A.map(val => {
    sum += val;
    return sum;
  })
}
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Author And Source
                            
                            이 문제에 관하여([Codility][PrefixSums] 한정된 move에서 가장 큰 배열합 찾기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://velog.io/@minnsane/CodilityPrefixSums-한정된-move에서-가장-큰-배열합-찾기
                            
                            
                            
                                저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                            
                            
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
const solution = (A, k, m) => {
  let result = Number.NEGATIVE_INFINITY;
  let pref = prefixSum(A);
  for(let i=0; i<= Math.min(m, k); i++){
    let leftPos = k-i;
    let rightPos = Math.min(A.length-1, k+m - 2*i);
    //console.log(leftPos, rightPos);
    let sum = leftPos > 0 ? pref[rightPos]-pref[leftPos-1] : pref[rightPos];
    result = Math.max(result, sum);
  }
  for(let i=0; i<= Math.min(m, A.length- k-1); i++){
    let leftPos = Math.max(0, k - m + 2 * i);
    let rightPos = k+i;
    let sum = leftPos > 0 ? pref[rightPos]-pref[leftPos-1] : pref[rightPos];
    result = Math.max(result, sum);
  }
  
  return result;
}
const prefixSum = A => {
  let sum = 0;
  return A.map(val => {
    sum += val;
    return sum;
  })
}Author And Source
이 문제에 관하여([Codility][PrefixSums] 한정된 move에서 가장 큰 배열합 찾기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@minnsane/CodilityPrefixSums-한정된-move에서-가장-큰-배열합-찾기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)