728x90
문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 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 |
문제풀이
0 레벨이라기에 어렵게 느껴졌습니다.
반복되는 값이 있기 때문에 정렬을 이용하여 비교하기로 생각하였습니다. 하나하나 값을 확인하기 위하여 for문도 사용하였습니다. 확인을 시작하면서 반복된 횟수를 length로 기록하기 위하여 length를 증가시킵니다. 증가시킨 후 현재의 값과 다음 값이 다르다면 같은 값이 더 이상 나오지 못하므로 length를 저장하고 answer에 지금의 값을 저장할 것입니다. 하지만 length가 최대로 많이 나온 빈도가 같다면 문제의 조건에 의하여 -1이 반환되어야 하므로 answer을 -1로 저장하도록 하였습니다. 위와는 다르게 length가 maxLength보다 크다면 maxLength를 현재의 length로 저장하고 answer을 지금의 값으로 저장을 합니다. 그 후 다음 검사를 하기 위하여 length를 0으로 변경합니다. 반복이 끝나면 저장된 answer을 반환하여 마무리합니다.
function solution(array: number[]): number {
let answer: number = -1;
array = array.sort((a, b) => a - b);
let maxLength: number = 0;
let length: number = 0;
for (let i = 0; i < array.length; i++) {
length++;
if (array[i] != array[i + 1]) {
if (maxLength == length) {
answer = -1;
} else if (maxLength < length) {
maxLength = length;
answer = array[i];
}
length = 0;
}
}
return answer;
}
728x90