문제

https://app.codility.com/programmers/lessons/5-prefix_sums/min_avg_two_slice/

풀이

  1. 두 수의 평균은 두 수 중 작은 수보다 크거나 같다(같은 경우는 두 수가 같을 때)
  2. 이를 3개 이상의 N개의 수가 있다고 할 때 두 그룹으로 나눈다면 N개의 수의 평균은 두 그룹 중 합이 작은 것 보다 무조건 크기 때문에 N이 4개인 것이 답이 될 수 없다.
  3. 2개, 3개인 경우일 때 최소이므로 이 경우만 다 구해보면 답을 구할 수 있다.

코드

function solution(A) {
    let minAvg = (A[0] + A[1]) / 2;
    let minIdx = 0;
    for(let i=2;i<A.length;++i) {
        let avg = (A[i-2] + A[i-1] + A[i]) / 3;
        if(minAvg > avg) {
            minAvg = avg;
            minIdx = i-2;
        }
        avg = (A[i-1] + A[i]) / 2;
        if(minAvg > avg) {
            minAvg = avg;
            minIdx = i-1;
        }
    }
    return minIdx;
}

+ Recent posts