문제:
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다.
정수 배열 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]을 리턴한다.
'코딩 테스트' 카테고리의 다른 글
[프로그래머스 Level 1] 둘만의 암호 (0) | 2025.04.12 |
---|---|
[프로그래머스 Level 0] 그림 확대 (0) | 2025.04.11 |
[프로그래머스 Level 0] 코드 처리하기 (0) | 2025.04.09 |
[프로그래머스 Level 0] 다항식 더하기 (0) | 2025.04.07 |
[프로그래머스 Level 0] 외계어 사전 (0) | 2025.04.06 |