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

JavaScript에서 연속된 숫자를 깨는 첫 번째 요소의 인덱스 찾기

배열을 입력받아 그 안에서 첫 번째 비연속(nonconsecutive) 숫자의 인덱스를 반환하는 함수를 작성해야 합니다.

여기서 배열의 모든 숫자는 공차가 1인 등차수열을 이룬다고 가정합니다. 하지만 이 규칙을 어기는 숫자가 있다면, 해당 숫자의 인덱스를 반환해야 합니다. 만약 모든 숫자가 완벽하게 연속된 순서라면 -1을 반환하면 됩니다.

문제 접근 방법

이 문제는 배열을 처음부터 끝까지 순회하면서 인접한 두 요소의 차이가 1이 아닌 지점을 찾으면 됩니다. 조건에 맞는 지점을 발견하는 즉시 해당 인덱스를 반환하고, 끝까지 규칙이 유지된다면 -1을 반환합니다.

예제 코드

함수 구현 코드는 다음과 같습니다.

const arr = [1,2,3,4,5,6,8,9,10];
const secondArr = [3,4,5,6,7,8,9,10,11,12,13,14,15];
const findException = (arr) => {
    for(let i = 0; i < arr.length-1; i++){
        if(arr[i+1] - arr[i] !== 1){
            return i+1;
        };
    };
    return -1;
};
console.log(findException(arr));
console.log(findException(secondArr));

코드 설명

findException 함수는 배열의 첫 번째 요소부터 마지막에서 두 번째 요소까지 반복문을 돌며 현재 요소 arr[i]와 다음 요소 arr[i+1]의 차이를 검사합니다.

두 값의 차이가 1이 아니라면 연속성이 깨진 것이므로, 다음 요소의 인덱스인 i+1을 즉시 반환합니다. 반복문이 끝날 때까지 예외가 발견되지 않았다면 모든 숫자가 연속적이라는 의미이므로 -1을 반환합니다.

첫 번째 배열 [1,2,3,4,5,6,8,9,10]에서는 6 다음에 8이 오므로(7이 누락됨), 인덱스 6이 반환됩니다. 두 번째 배열은 3부터 15까지 완벽하게 연속되어 있으므로 -1이 반환됩니다.

실행 결과

콘솔 출력 결과는 다음과 같습니다.

6
-1