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

JavaScript에서 배열이 일정한 간격으로 증가하는지 확인하는 방법

문제 개요

숫자로 이루어진 배열을 입력받는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열의 인접한 요소들 사이의 차이가 모두 동일한 양수일 때 true를, 그렇지 않으면 false를 반환해야 합니다.

쉽게 말해, 배열이 등차수열처럼 일정한 간격(마진)으로 증가하고 있는지 판별하는 문제입니다.

예제 코드

이를 구현한 코드는 다음과 같습니다 −

const arr = [4, 7, 10, 13, 16, 19, 22];
const growingMarginally = arr => {
   if(arr.length <= 1){
      return true;
   };
   const diff = arr[1] - arr[0];
   if(diff <= 0){
      return false;
   }
   for(let i = 0; i < arr.length - 1; i++){
      if (arr[i+1] - arr[i] !== diff){
         return false;
      }
   }
   return true;
};
console.log(growingMarginally(arr));

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다 −

true

코드 설명

위 코드의 동작 방식을 단계별로 살펴보겠습니다.

  • 배열 길이 확인: 배열의 길이가 1 이하이면 비교할 인접 요소가 없으므로 항상 true를 반환합니다.
  • 기준 차이 계산: 첫 번째 요소와 두 번째 요소의 차이를 공차(diff)로 설정합니다.
  • 양수 여부 검사: 공차가 0 이하라면 배열이 실제로 증가하고 있지 않은 것이므로 false를 반환합니다. 문제의 조건이 '동일한 양수'이기 때문에 차이가 0인 경우도 제외해야 합니다.
  • 전체 순회 검사: 반복문을 통해 모든 인접 요소 쌍의 차이가 앞서 구한 공차와 정확히 일치하는지 확인하고, 하나라도 다르면 즉시 false를 반환합니다.

모든 검사를 통과하면 해당 배열은 일정한 양의 간격으로 균등하게 증가하고 있는 것이므로 최종적으로 true를 반환합니다. 예제 배열 [4, 7, 10, 13, 16, 19, 22]는 매번 3씩 증가하므로 true가 출력됩니다.