문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한 사항
- 0 < array의 길이 < 100
- 0 ≤ array의 원소 < 1000
입출력 예

입출력 예 #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입니다
나의 풀이
function solution(arr) {
// 입력값 arr에서 중복값을 제거
let deleteDupArr = [...new Set(arr)];
// arr의 각 요소가 몇개 있는지 담을 배열
let answer = new Array(deleteDupArr.length).fill(0);
// arr에 요소개 1개일경우 최빈값음 그 1개이기 때문에 리턴
if(answer.length === 1) return arr[0];
// arr배열을 순회하며 중복을 제거한 deleteDupArr의 요소개 arr에 몇개씩 있나 확인 후 answer에 저장
for(let i=0; i<deleteDupArr.length; i++) {
for(let j=0; j<arr.length; j++) {
if(deleteDupArr[i] === arr[j]) answer[i]++;
}
}
// 최빈값이 가장 높은 수가 여러개일경우 ex) [1, 1, 2, 2, 3] -1 리턴
const a = answer.filter((item) => item === Math.max(...answer))
if(a.length > 1 ) return -1
// 최빈값이 가장 높은 index를 찾아 deleteDupArr에서 해당 인덱스를 반환
const maxIndex = answer.findIndex((item) => item === Math.max(...answer))
return deleteDupArr[maxIndex];
}
'programmers > level 0' 카테고리의 다른 글
Programmers - Js - 분수의 덧셈 (0) | 2023.03.28 |
---|---|
Programmers - Js - OX퀴즈 (0) | 2023.03.24 |
Programmers - Js - 다항식 더하기 (0) | 2023.03.23 |
Programmers - Js - 문자열 밀기 (0) | 2023.03.23 |
Programmers - Js - 저주의 숫자 3 (0) | 2023.03.23 |