joyful
[Javascript] 최빈값 구하기 - 프로그래머스 본문
문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/120812
문제
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
제한 사항
- 0 < array의 길이 < 100
- 0 ≤ array의 원소 < 1000
예제 출력
[1, 2, 3, 3, 3, 4] / 3
[1, 1, 2, 2] / -1
[1] / 1
풀이
function solution(array) {
const counts = array.reduce((acc, element) => {
acc[element] = (acc[element] || 0) + 1;
return acc;
}, {}); //{1:1, 2:1, 3:3, 4:1}
// 빈도수가 가장 높은 값 찾기
let maxCount = Math.max(...Object.values(counts)); //객체의 값들을 배열로 반환 [1, 1, 3, 1]
// 최빈값이 여러 개인 경우 -1 반환
if (Object.values(counts).filter(count => count === maxCount).length > 1) {
return -1;
}
// 최빈값 찾기
let mode = Object.keys(counts).find(key => counts[key] === maxCount); //객체의 키들을 배열로 변환 [1, 2, 3, 4], find 메서드 충족하는 값 찾기
return parseInt(mode);
}
// console.log(solution([1, 2, 3, 3, 3, 4])); 3
console.log(solution([[1, 1, 2, 2]])); -1
// console.log(solution([1])); 1
'프로그래머스' 카테고리의 다른 글
[Javascript] 옷가게 할인 받기 - 프로그래머스 (0) | 2024.03.11 |
---|---|
[Javascript] 배열의 평균값 - 프로그래머스 (0) | 2024.03.11 |
[Javascript] 피자 나눠 먹기 (3) - 프로그래머스 (0) | 2024.03.07 |
[Javascript] 피자 나눠 먹기 (2) - 프로그래머스 (1) | 2024.03.07 |
[Javascript] 피자 나눠 먹기 (1) - 프로그래머스 (0) | 2024.03.07 |