averagePair 함수는 arr과 num을 인수로 전달받습니다. arr은 배열이고 num은 arr의 요소 중 두 개의 요소의 평균값을 의미합니다. 따라서 인수로 전달받은 arr의 요소 중 두 개의 요소의 평균값이 num과 일치할 경우 true를 반환하고 그렇지 않을 경우 false를 반환합니다.
시간복잡도: O(N)
공간복잡도: O(1)
배열을 순회하는 중 배열의 첫번째 요소와 마지막 요소를 더하여 2로 나누어 평균값을 구하고 만약 이 평균값이 num
과 일치한다면 true
를 반환합니다. arr을 [1, 2, 3, 4, 5, 6]
, num을 2
로 가정한다면, 1과 6의 평균값
은 3.5
로 2보다 큽니다. 이 경우 평균값이 더 크므로 2의 근접한 값을 산출하기 위해서는 평균값을 낮춰야 하는데 평균값을 낮추기 위해서 합계를 낮춰주는 방식을 사용하여 반복문 안 조건을 구성합니다. 즉, 합계를 낮추기 위해서는 큰 값을 낮춰야 하므로 6을 5로 바꾸어주어야 합니다. 반대의 경우 1을 2로 바꾸어 줍니다.
'ust strict'
const averagePair = (arr, num) => {
let start = 0;
let end = arr.length - 1;
while (start < end) {
let avg = (arr[start] + arr[end]) / 2;
if (avg === num) return true;
else if (avg < num) start++;
else end--;
}
return false;
}
averagePair([1, 2, 3], 2)
;
averagePair([1, 3, 3, 5, 6, 7, 10, 12, 19], 8)
;
averagePair([-1, 0, 3, 4, 5, 6], 2.5)
;
위치(index)
를 나타내는 변수 start
와 end
를 선언 및 초기화합니다. start는 0
으로, end는 배열의 마지막 인덱스인 arr.length - 1
으로 초기화합니다. arr[start]
와 arr[end]
값을 더하고 2로 나누어 줍니다.false
를 반환합니다.