최빈값 구하기

Jtiiin:K·2023년 10월 23일
1
post-thumbnail

최빈값 구하기


map, reduce 등등 방법이 많았지만
지금 내가 이해하기 가장 쉬운 코드로 가져옴

💡

function solution(array) {
  
  // 빈 map 생성
  let map = new Map();
  
  // 배열의 요소가 1개라면 바로 return => 그 값이 최빈값 
  if(array.length === 1) {
    return array[0]
  }
  
  // array의 가장 큰 값까지 for문을 돌면서 key에 담기 
  for (let i = 0; i <= Math.max(...array); i++) {
    map.set(i, 0)
  }
  // array의 길이만큼 돌면서 key에 해당하는 값(value)에 +1 
  for (let i = 0; i < array.length; i++) {
    map.set(array[i], map.get(array[i]) + 1)
  }
  
  // 값(value)들만 모은 배열 생성 후 최대값 찾기 
  const arr = Array.from(map.values())
  const max = Math.max(...arr)
  
  // 배열의 최대값의 첫 인덱스와 마지막 인덱스가 같지 않다면
  // (=최빈값이 1개가 아니라면) return -1 
  // 1개라면 그 값을 return 
  if(arr.indexOf(max) !== arr.lastIndexOf(max)) {
    return -1;
  } else {
    return arr.indexOf(max)
  }
}

출처
https://i-ten.tistory.com/211#toc-%EB%B0%B0%EC%97%B4%EC%97%90%EC%84%9C%20%EC%9D%B8%EB%8D%B1%EC%8A%A4%EB%93%A4%EC%9D%98%20%EC%9D%BC%EC%B9%98%EB%A5%BC%20%EB%94%B0%EC%A0%B8%20%EC%A4%91%EB%B3%B5%20%EC%97%AC%EB%B6%80%EB%A5%BC%20%EC%B2%B4%ED%81%AC

profile
호기심 많은 귀차니즘의 공부 일기

0개의 댓글