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

JavaScript에서 배열 요소가 n번 이상 반복되는지 확인하는 방법

문제 개요

두 개의 인수를 받는 JavaScript 함수를 작성해야 합니다.

  • 반복되는 요소를 포함할 수 있는 리터럴 배열 arr
  • 허용 기준이 되는 숫자 n(limit)

이 함수는 배열의 모든 요소가 n번 미만으로만 나타나는지 검증해야 합니다. 만약 어떤 요소라도 n번 이상 반복된다면 false를 반환하고, 그렇지 않다면 true를 반환합니다.

해결 접근 방식

먼저 reduce() 메서드를 사용해 배열을 순회하면서 각 요소의 등장 횟수를 객체에 누적합니다. 이후 Object.values()로 추출한 빈도 값들에 대해 every() 메서드를 적용하여, 모든 요소의 등장 횟수가 n 미만인지 한 번에 확인할 수 있습니다.

예제

실제 구현 코드는 다음과 같습니다.

const arr = [4, 6, 7, 4, 2, 5, 7, 7, 4, 4, 3];
const validateElements = (arr, n) => {
    const counts = arr.reduce((acc, el) => {
        acc[el] = (acc[el] + 1) || 1;
        return acc;
    }, {});
    return Object.values(counts).every(c => {
        return c < n;
    });
};
console.log(validateElements(arr, 3));
console.log(validateElements(arr, 4));
console.log(validateElements(arr, 6));

위 배열에서 숫자 4는 총 4번, 숫자 7은 3번 등장합니다. 따라서 n이 3일 때와 4일 때는 조건을 만족하지 못해 false가 출력되고, n이 6일 때는 모든 요소가 6번 미만으로 등장하므로 true가 출력됩니다.

출력 결과

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

false
false
true

정리

이 방식은 배열을 한 번만 순회하며 빈도를 계산하기 때문에 시간 복잡도가 O(n)으로 효율적입니다. 데이터 유효성 검사, 입력값 제한 처리 등 다양한 상황에서 유용하게 활용할 수 있습니다.