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

자바스크립트 배열에서 두 번째로 큰 요소를 찾는 방법

자바스크립트에서 배열에 담긴 값 중 두 번째로 큰 숫자를 찾아야 하는 경우가 종종 있습니다. 이번 글에서는 반복문과 조건문만으로 두 번째로 큰 요소를 효율적으로 찾는 방법을 단계별로 살펴보겠습니다.

예제 배열

먼저 다음과 같은 숫자 배열이 있다고 가정하겠습니다.

var numbers = [10, 50, 80, 60, 89];

이 배열에서 가장 큰 값은 89이므로, 우리가 찾아야 할 두 번째로 큰 값은 80입니다.

두 번째로 큰 요소를 찾는 알고리즘

핵심 아이디어는 간단합니다. 배열을 한 번만 순회하면서 최댓값(firstLargerNumber)과 차둣값(secondlargerNumber)을 동시에 추적하는 것입니다.

  • 현재 요소가 기존 최댓값보다 크면 → 기존 최댓값은 두 번째 값이 되고, 현재 요소가 새로운 최댓값이 됩니다.
  • 그렇지 않고 현재 요소가 두 번째 값보다만 크다면 → 두 번째 값을 갱신합니다.

초기값으로 Number.MIN_SAFE_INTEGER(자바스크립트에서 안전하게 표현할 수 있는 가장 작은 정수)를 사용하면 음수가 포함된 배열도 정확하게 처리할 수 있습니다.

전체 예제 코드

var numbers = [10, 50, 80, 60, 89];
var firstLargerNumber = Number.MIN_SAFE_INTEGER;
var secondlargerNumber = firstLargerNumber;

for (var tempNumber of numbers) {
    if (tempNumber > firstLargerNumber) {
        secondlargerNumber = firstLargerNumber;
        firstLargerNumber = tempNumber;
    } else if (tempNumber > secondlargerNumber) {
        secondlargerNumber = tempNumber;
    }
}

console.log("두 번째로 큰 숫자=" + secondlargerNumber);

프로그램 실행 방법

위 코드를 Node.js 환경에서 실행하려면 터미널에서 다음 명령어를 입력합니다.

node fileName.js

여기서는 파일 이름이 demo138.js라고 가정하겠습니다.

실행 결과

프로그램을 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

PS C:\Users\Amit\JavaScript-code> node demo138.js
두 번째로 큰 숫자=80

정리

이 방식의 장점은 배열을 단 한 번만 순회(O(n))하기 때문에 성능 면에서 매우 효율적이라는 점입니다. 배열을 정렬한 뒤 뒤에서 두 번째 값을 가져오는 방법(sort() 사용)보다 시간 복잡도 측면에서 유리하며, 중복된 최댓값 처리나 음수 포함 여부 등 상황에 맞게 조건을 조정하여 활용할 수 있습니다.