문제
- 정수 배열 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 |
생각할 점
- 각 원소가 몇 개 존재하는지 기록해야 함.
- 기록용 배열(frequency)를 따로 생성하고, array 원소의 값(x)의 출현 빈도를 기록용 배열의 x번째 index에 기록.
- frequency 배열의 원소 중 최댓값을 구함. 최댓값의 index값이 array 배열의 최빈값.
- frequency 배열에서 최댓값과 동일한 값을 가지는 원소가 있는지 점검. 혹시 있다면 -1을 return
작성 코드
class Solution {
public int solution(int[] array) {
int answer = 0;
int max = 0;
int[] frequency = new int[1000];
for (int i = 0; i < array.length; i++) {
frequency[array[i]]++;
if (max < frequency[array[i]]) {
max = frequency[array[i]];
answer = array[i];
}
}
int temp = 0;
for (int i = 0; i < frequency.length; i++) {
if (max == frequency[i]) {
temp++;
}
if (temp > 1) {
answer = -1;
}
}
return answer;
}
}