JavaScript_programmers_알고리즘_최빈값 구하기

김효진·2023년 9월 20일
0
post-custom-banner

<나의 풀이>

function solution(arr) {
  let result = {}
  let answer = {}
  for (let x of arr) {
    result[x] = (result[x] || 0) + 1
  }
  
// 객체로 각 요소별 갯수가 key와 value로 출력됨
// {1: 2, 2: 1, 3: 4, 4: 3}

  let count = Object.values(result).sort((a, b) => b - a)
  // 최빈값의 value를 count 변수에 담음
  let resultKey = Object.keys(result)
  answer = resultKey.find((key) => result[key] == count[0])
  // 해당 value의 키 값을 가져옴

  const countMax = count.filter((max) => max == count[0]).length
  // 최빈값의 갯수를 구함.
  if (countMax > 1) return -1
   return Number(answer)
} // 최빈값이 2 이상이면 -1을 리턴

코드를 효율적으로 짜지 못한 것 같아 다른 사람들의 풀이를 찾아봤다.

function solution(array) {
let m = new Map();
for (let n of array) m.set(n, (m.get(n) || 0)+1);
m = [...m].sort((a,b)=>b[1]-a[1]);
return m.length === 1 || m[0][1] > m[1][1] ? m[0][0] : -1;
}

이 풀이가 내 주관으로 가장 간결하고 알기 쉽게 느껴지는데 map,set 등의 문법공부가 아직 부족해 코드의 의미를 정확하게 해석하지는 못하고 있다. 이 문법을 더 공부해봐야겠다.

profile
더 많은 사람들이 더 좋은 정보와 서비스를 누릴 수 있게!!
post-custom-banner

0개의 댓글