[JavaScript | 프로그래머스] 최빈값 구하기

고은비·2023년 4월 12일
0

Algorithm

목록 보기
1/9

💡 최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

입출력 예시

arrayresult
[1,2,3,3,3,4]3
[1,1,2,2]-1
[1]1

Solution

function solution(array) {
      const getSum = array.reduce(
        (ac, v) => ({ ...ac, [v]: (ac[v] || 0) + 1 }),
        {}
      );
      const getSumValue = Object.values(getSum);

      const frequency = Object.keys(getSum).filter((key) => {
        return getSum[key] === Math.max(...getSumValue);
      });

      if (frequency.length > 1) {
        return -1;
      } else {
        return Number(frequency)
      }
    }

해결과정

첫번째로 reduce 메서드 사용해서 배열의 각 요소를 순회하며 객체 형태로 빈도수를 계산.

 const getSum = array.reduce(
        (ac, v) => ({ ...ac, [v]: (ac[v] || 0) + 1 }),
        {}
      );
// {1:1, 2:1, 3:3, 4:1}

Object.values로 빈도수 값만 배열로 추출(value값), Object.keysfilter 메서드 이용해서 getSum 객체에서 가장 높은 빈도수를 가진 프로퍼티를 필터링.

 const getSumValue = Object.values(getSum);  // [1,1,3,1]

 const frequency = Object.keys(getSum).filter((key) => {
        return getSum[key] === Math.max(...getSumValue);
      }); // ['3']

참고1
참고2

0개의 댓글

관련 채용 정보