🔻 최빈값 구하기
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다.
정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요.
최빈값이 여러 개면 -1을 return 합니다.입출력 예
array result [1, 2, 3, 3, 3, 4] 3 [1, 1, 2, 2] -1 [1] 1
👀
파이썬에 더 익숙한지라,, 딕셔너리같은 거 없나 하다가 map이 생각났다.
바로 map을 떠올리지 못했다 😌
function solution(array) {
let counting = new Map();
let max = 0;
let maxArray = [] //최대값 저장 배열
for (let i of array) {
if(!counting.has(i)) counting.set(i, 0);
if(counting.has(i)) counting.set(i, counting.get(i) + 1);
while(counting.get(i) > max) max++; // max값 업데이트
}
for (let [k, v] of counting) {
if (v === max) maxArray.push(k); //최대값 중복 체크위해 저장
}
return maxArray.length === 1? maxArray[0] : -1;
}
-> map.get()
-> map.set()
-> map.has()
-> map 객체는 그 자체로 for of문에 [key, value]로 순회 가능
const fruits = new Map([
['strawberry', '딸기'],
['banana', '바나나'],
['grape', '포도'],
]);
for (const [key, value] of fruits) {
console.log(key, value);
}
// "strawberry" "딸기"
// "banana" "바나나"
// "grape" "포도"
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;
}
-> || 연산자
( ___ || 0 ) 일 때 둘 다 0이 아니라면, true인 값을 return
-> [...map].sort((a,b) => b[1] - a[1]);
chaining을 이용해서 sort를 이렇게 쓸 수 있음!!