[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