최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다.
정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
class Solution {
public int solution(int[] array) {
int answer = 0;
int countMax = 0;
int arrayMax = 0;
// 1. 배열의 최대값을 구함
for (int i=0; i<array.length; i++) {
if (arrayMax < array[i]) {
arrayMax = array[i];
}
}
int [] arr = new int[arrayMax+1];
// 2. 배열에 들어있는 수에 +1
for (int j=0; j<array.length; j++) {
arr[array[j]]++;
}
// 3. 새로 만든 배열의 최대값을 구함
for (int k=0; k<arr.length; k++) {
if (countMax < arr[k]) {
countMax = arr[k];
answer = k;
}
}
int count = 0;
// 4. countMax가 여러개인지 확인
for (int j=0; j<arr.length; j++) {
if (arr[j]==countMax) {
count++;
}
}
// 5. 만약 1이면 answer을 return, 1보다 크면 최빈값이 여러개이므로 -1 return
if (count > 1) {
return -1;
} else {
return answer;
}
}
}
새로운 배열을 만들기 위해서 주어진 array의 최대값을 구해줘야한다.
제한 사항에 array 원소에 0이 포함할 수 있다고 했기 때문에 최대값 + 1로 배열의 길이를 설정한다.
그 후 array 배열을 for문으로 돌면서 해당 원소가 포함된 arr 배열에 +1을 해준다. 이때 arr 배열에서 가장 큰 값이 최빈값이 된다.
최빈값을 구했으니 여러개인지 확인해서 만약 여러개라면 -1을 return하고 하나이면 최빈값을 return 한다.