자료구조 및 알고리즘/JavaScript Practice
JS Practice) 프로그래머스 : 최빈값 구하기
Ryomi
2023. 4. 25. 09:40
728x90
반응형

최빈값 구하기
문제설명 :
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 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 |
접근
: nums의 item 을 기준으로 array의 반복문을 돌려 item 과 동일한 el의 수를 구했다. 다음으로 객체에 key와 value로 item 과 length 를 넣어주었다. 이후 key와 value 배열을 만들어 value의 maxNum의 index를 구하였다.
return 시 동일한 value(최빈값)를 가지는 경우를 제하기 위해 values.lastIndexOf()를 사용했다.
function solution(array) {
let obj = {}
let nums = new Set(array)
for(let item of nums.keys()) {
for(const el of array) {
let length = array.filter(el => item === el).length
obj[item] = length
}
}
let keys = Object.keys(obj)
let values = Object.values(obj)
let idx = values.indexOf(Math.max(...values))
return idx === values.lastIndexOf(values[idx]) ? Number(keys[idx]) : -1
}
solution
function solution(array) { // [1, 2, 3, 3, 3, 4]
let m = new Map(); // Map(0) {}
for (let n of array) m.set(n, (m.get(n) || 0)+1); // Map(4) { 1 => 1, 2 => 1, 3 => 3, 4 => 1 }
m = [...m].sort((a,b)=>b[1]-a[1]); // [ [ 3, 3 ], [ 1, 1 ], [ 2, 1 ], [ 4, 1 ] ]
return m.length === 1 || m[0][1] > m[1][1] ? m[0][0] : -1;
}
JS) Map()
< Map 객체 > - key-value 쌍과 key의 원래 삽입 순서를 기억 - 모든 값은 key 또는 value로 사용될 수 있음 - iterator 속성을 지니므로 'for-of' 문으로 반복문 수행 가능 const map = new Map(); map.set(1, 'one').set(2, 't
premubo.tistory.com
728x90
반응형