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

자세한 내용은 아래 링크를 참고해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/120812
나의 풀이
Reduce를 사용해서 풀어봤습니다.
function solution(array) {
const counter = array.reduce((acc, cur) => ({
...acc,
[cur]: (acc[cur] || 0) + 1
}), {})
const items = Object.keys(counter).map((key) => [
Number(key), counter[key]
]).sort((a, b) => b[1] - a[1])
if (items[0][1] === items?.[1]?.[1]) {
return -1
}
return items[0][0];
}
2024.02.02 - [Javascript/배경 & 실무 지식] - [JavaScript] Reduce() 란?
[JavaScript] Reduce() 란?
Reduce() 란? - 배열의 각 요소에 대해 주어진 reducer 함수를 실행하고, 하나의 결과값을 반환 const array1 = [1, 2, 3, 4]; // 0 + 1 + 2 + 3 + 4 const result = 0; const sum = array1.reduce( (accumulator, currentValue) => accumulator
beombe.tistory.com
다른 분의 풀이지만 Reduce를 사용하지 않고 기본적인 구조로 풀이를 한다면, 아래처럼 깔끔하게 생성됩니다.
function solution(array) {
var answer = 0;
var arr = [...new Set(array)];
var count_arr = [];
for(var i = 0; i < arr.length; i++) {
var count = 0;
for (var j = 0; j < array.length; j++) {
if (arr[i] === array[j]) {
count++;
}
}
count_arr.push(count);
}
var max = Math.max(...count_arr);
var j = count_arr.indexOf(max);
answer = arr[j];
for(var i = 0; i<arr.length; i++) {
if (count_arr[i] === max && i != j) {
answer = -1;
}
}
return answer;
}
반응형
'Javascript > 코딩테스트-연습' 카테고리의 다른 글
[JavaScript] 옷 가게 할인받기 - 프로그래머스 (22) | 2024.03.20 |
---|---|
[JavaScript] ZigZag Conversion - Leetcode (25) | 2024.03.19 |
[JavaScript] 평행 - 프로그래머스 (27) | 2024.03.14 |
[JavaScript] 점의 위치 구하기 (32) | 2024.02.27 |
[JavaScript] 문자열 뒤집기 (27) | 2024.02.23 |