자바스크립트로
최다 빈도 값
구하기 ➡️ Map 객체를 활용해 풀어보았다.
ES6부터 새롭게 도입된 개념으로, 키와 값을 연결하기 위해 사용하는 데이터 유형이다. 프로토타입은 Object
.
for-of
나 스프레드 연산자를 사용 가능하며,new Map()
: 일반 생성자 함수와 같이 변수처럼 사용 가능하다.map.set(key, value)
: 객체와 비슷하게 키와 값을 한 번에 선언할 수 있다. 체이닝도 가능.map.get(key)
: 객체와 비슷하게 인자에 키를 넣어 값이나 undefined를 반환한다.map.has(key)
: 데이터 존재 유무를 Boolean 값으로 반환한다.map.delete(key)
: 키로 값을 제거한다.map.clear()
: 모든 데이터를 삭제할 수 있다.map.size
: 데이터 갯수를 반환한다.map.keys()
: iterable
키에 대해 반복 가능한 값을 반환한다.map.values()
: iterable
값에 대해 반복 가능한 값을 반환한다.map.entries()
: iterable
객체로 반환되며 각 값은 [key, value] 형태이다.map.next()
: entries 메소드로 반환된 이터러블 객체 뒤에 활용돼 순차적으로 value, done 프로퍼트 제공.let blueprint = new Map([
['naver', "green"],
['kakao', "yellow"],
['woowahan', "sky"]
]);
for (let [k, v] of blueprint) {
return [k, v] // ['naver', "green"], ['kakao', "yellow"], ['woowahan', "sky"]
}
for..of 구문과 활용이 가능하며 한 번에 키와 값을 받아낼 수도 있다.
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다.
정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요.
최빈값이 여러 개면 -1을 return 합니다.
function solution(array) {
let counting = new Map();
let countArray = new Array;
let max = 0;
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++;
}
for (let [k, v] of counting) {
if(v === max) countArray.push(k)
}
return countArray.length === 1 ? countArray[0] : -1;
}