프로그래머스 JS LV0

LV0 82 최빈값 구하기

와라리요 2022. 11. 21. 13:41

문제 설명

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

 

제한 사항

  • 0 < array의 길이 < 100
  • 0 ≤ array의 원소 < 1000

 

입출력 예

array result
[1, 2, 3, 3, 3, 4] 3
[1, 1, 2, 2] -1
[1] 1

 

나만의 풀이

  이 문제는 코드를 설명하기 보다는 생각한 부분을 이야기 하면 숫자마다 카운터를 하기 위해 new Set()를 이용해 중복은 제거하고 new Array().fill(0)을 이용해 0으로만 되어있는 동일한 길이의 배열을 선언하였다.

  그 후 for문을 이용해 0배열에 array의 길이 만큼 반복하고 array의 숫자와 동일한 숫자가 있는 위치에 카운트를 해준 후 max가 2개 이상이면 -1를 아니면 max의 위치와 동일한 Set의 값을 반환하는 코드를 구성했으며 for문이 시작되기 전 set 배열에 원소가 1개이면 원소 값을 return하는 조건문을 넣어서 조금 더 런타임을 줄였다.

function solution(array) {
    const set = new Set(array);
    const arrSet = [...set];
    if (arrSet.length === 1) {
        return arrSet[0];
    }
    
    let countArr = new Array(arrSet.length).fill(0);
    for (let i = 0; i < array.length; i++) {
        countArr[arrSet.indexOf(array[i])]++;
    }
    return countArr.filter(e => Math.max(...countArr) === e).length > 1 ? -1 : arrSet[countArr.indexOf(Math.max(...countArr))]
}

'프로그래머스 JS LV0' 카테고리의 다른 글

LV 0 84 다음에 올 숫자  (0) 2022.11.24
LV0 83 다항식  (0) 2022.11.22
LV0 81 저주의 숫자 3  (0) 2022.11.18
LV0 80 특이한 정렬  (0) 2022.11.16
LV0 79 치킨 쿠폰  (0) 2022.11.14