Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

joyful

[Javascript] 최빈값 구하기 - 프로그래머스 본문

프로그래머스

[Javascript] 최빈값 구하기 - 프로그래머스

조이풀한 개발자 2024. 3. 6. 22:55

문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/120812

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제


두 자연수 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