문제 설명
- 최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 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 |