inblog logo
|
👨🏻‍💻DriedPollack's Blog
    💻HTML / CSS / JavaScript💡Coding Test

    [programmers] 최빈값 구하기 - JavaScript

    주어진 정수 배열에서 가장 자주 나오는 값을 찾아 최빈값을 반환하는 solution 함수를 작성하는 문제입니다. 배열의 최댓값을 기준으로 새로운 배열을 생성하고, 해당 값에 해당하는 인덱스의 값을 1씩 증가시킵니다. 그 후, 새로운 배열에서 가장 큰 값을 가진 인덱스를 반환하며, 중복된 값이 있다면 -1을 반환합니다.
    Jan 01, 2024
    [programmers] 최빈값 구하기 - JavaScript

    문제 설명

    최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 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

    입출력 예 설명

    입출력 예 #1
    • [1, 2, 3, 3, 3, 4]에서 1은 1개 2는 1개 3은 3개 4는 1개로 최빈값은 3입니다.
    입출력 예 #2
    • [1, 1, 2, 2]에서 1은 2개 2는 2개로 최빈값이 1, 2입니다. 최빈값이 여러 개이므로 -1을 return 합니다.
    입출력 예 #3
    • [1]에는 1만 있으므로 최빈값은 1입니다.

    solution.js

    function solution(array) { // array의 최댓값만큼의 길이를 가진 새로운 배열 생성 let newArray = new Array(Math.max(...array)+1).fill(0); // array 반복문을 통해, 해당 값에 해당하는 index의 값 += 1 for (let i = 0; i < array.length; i++) { newArray[array[i]] += 1; } // newArray의 최댓값에 해당 하는 index 출력 // 만약 indexOf와 lastIndexOf가 지칭하는 값이 같으면, -1 출력 (중복인 경우 확인) if (newArray.indexOf(Math.max(...newArray)) !== newArray.lastIndexOf(Math.max(...newArray))) { return -1 } else { return newArray.indexOf(Math.max(...newArray)); }; }
     

    핵심 키워드

    • Math.max() 함수는 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환한다.
    • Array.fill() 함수는 배열의 인덱스 범위 내에 있는 모든 요소를 정적 값으로 변경한다. 그리고 수정된 배열을 반환한다.
    • newArray 배열에 기존 array 배열의 값에 해당하는 인덱스의 값을 1씩 증가시켜서, 가장 많이 출현한 인덱스를 반환한다.
    • Array.indexOf() 함수는 배열에서 주어진 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고, 찾을 수 없는 경우 -1을 반환한다.
     

    결론!

    해당 문제를 풀면서 Array.fill() 함수, Array.indexOf() 함수의 사용법을 익힐 수 있었다.
     
    Share article

    👨🏻‍💻DriedPollack's Blog

    RSS·Powered by Inblog