코딩 테스트
[프로그래머스 Level 0] 최빈값 구하기
y_flm
2025. 4. 9. 19:44
반응형
문제:
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다.
정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요.
최빈값이 여러 개면 -1을 return 합니다.
문제 풀어보기: https://school.programmers.co.kr/learn/courses/30/lessons/120812
풀이보기
더보기
function solution(array) {
let count = {};
let maxValue = 0;
let maxKeys = [];
for(let num of array) {
count[num] = (count[num] + 1) || 1;
}
for (let key in count) {
if (count[key] > maxValue) {
maxValue = count[key];
maxKeys = [key];
} else if (count[key] === maxValue) {
maxKeys.push(key);
}
}
return maxKeys.length > 1 ? -1 : Number(maxKeys[0]);
}
나는 객체를 이용해서 문제를 풀었다.
먼저 배열을 순회하며 각 요소와 요소에 대한 카운트 값을 count 객체에 넣어준다.
count 객체에 대해 만약 count[key] 값이 maxValue보다 크면 maxValue에 count[key] 값을 넣어준다.
그리고 maxKeys에 해당 키를 넣어준다.
하지만 count[key]와 maxValue가 똑같다면 maxKeys에 해당 키를 푸쉬해준다.
둘의 다른 점은 push할 때는 [1, 2] 이런식으로 마지막 요소 다음에 하나씩 추가되는 것이고,
maxKeys = [key]는 maxKeys에 [key]를 덮어씌우는 것이다.
그러므로 기존에 [1, 2]가 있었더라도 maxKeys=[3]을 해버리면 maxKeys는 [3]만 들어있게 된다.
따라서 maxKeys의 길이가 1 이상이면 같은 값이 여러 개인 것이므로 -1을 리턴해주고 아니라면 maxKeys[0]을 리턴한다.
반응형