[프로그래머스] Lv. 0 최빈값 구하기

상현·2023년 9월 19일
0

코딩테스트

목록 보기
1/30
post-thumbnail

레벨이 0이라길래 더 간단한 방법으로 풀 수 있지 않을까 하고 여러 고민을 하다가.. 결국 아래와 같이 풀긴 풀었다. 하지만 뭔가 더 좋은 방법이 있을 거라는 생각이 계속 든다.

function solution(array) {
  let map = {};

  // 배열을 돌면서 해당 요소가 몇 번 나오는지 객체에 담는다.
  array.forEach((elem) => {
    if (map[elem]) {
      map[elem] = map[elem] + 1;
    } else {
      map[elem] = 1;
    }
  });

  // 가장 많이 나온 개수를 구함
  let values = Object.values(map);
  let max = Math.max(...values);

  // 가장 많이 나온 개수의 index를 구함
  let index = values.indexOf(max);

  // 가장 많이 나온 개수의 index가 lastIndexOf의 리턴 값과 다르면 최빈 값이 여러개로 간주하여 -1 리턴
  if (index !== values.lastIndexOf(max)) return -1;

  // 아니면 index의 key값(최빈 값) 리턴
  return +Object.keys(map)[index];
}
profile
프론트엔드 개발자

0개의 댓글