Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 배열의 인접 요소 간 최대 절대 차이 구하기

문제 개요

정수로 이루어진 배열이 주어졌을 때, 인접한 두 요소 사이의 절대 차이 중 가장 큰 값을 찾는 것이 이번 문제의 목표입니다.

예를 들어 다음과 같은 입력 배열이 있다고 가정해 보겠습니다.

const arr = [2, 4, 1, 0];

이 경우 기대되는 출력값은 다음과 같습니다.

const output = 3;

그 이유는 배열에서 인접한 요소인 4와 1 사이의 절대 차이(|4 − 1| = 3)가 모든 인접 쌍 중에서 가장 크기 때문입니다.

해결 방법

배열의 각 인접 요소 쌍을 순회하면서 절대 차이를 계산하고, 그중 최댓값을 반환하면 됩니다. JavaScript에서는 slice()reduce() 메서드를 조합하면 반복문 없이도 간결하게 구현할 수 있습니다.

예제 코드

const arr = [2, 4, 1, 0];
const maximumDecreasing = (arr = []) => {
   const res = arr.slice(1).reduce((acc, val, ind) => {
      return Math.max(Math.abs(arr[ind] − val), acc);
   }, 0);
   return res;
};
console.log(maximumDecreasing(arr));

코드 설명

  • arr.slice(1): 첫 번째 요소를 제외한 새로운 배열을 만듭니다. 이렇게 하면 현재 요소(val)와 바로 앞의 요소(arr[ind])를 짝지어 비교할 수 있습니다.
  • reduce(): 각 인접 요소 쌍의 절대 차이를 계산하면서, 지금까지 발견한 최댓값(acc)과 비교하여 더 큰 값을 계속 유지합니다.
  • Math.abs(): 두 요소 사이의 절대 차이를 구합니다.
  • Math.max(): 누적된 최댓값과 현재 계산된 차이 중 더 큰 값을 선택합니다.
  • 초기값이 0으로 설정되어 있으므로, 빈 배열이나 요소가 하나뿐인 배열에서도 오류 없이 안전하게 동작합니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

3