HashMap에 파라미터로 들어온 array 배열의 값을 HashMap에 저장
➡️ hashMap.put(n, hashMap.getOrDefault(n, 0) + 1)
➡️ 기존 값이 있으면 0, 아니면 해당 value값에 + 1
value가 가장 큰 값을 max에 저장한 후, hashmap에서 value가 max인 값들의 개수 cnt를 구한 뒤 반환
만약 cnt가 1이면 최빈값이 유일한 값이므로 result 반환, 그렇지 않으면 -1 반환
import java.util.*;
public class Mode {
public int solution(int[] array) {
HashMap<Integer, Integer> hashMap = new HashMap<>();
for (int n : array) hashMap.put(n, hashMap.getOrDefault(n, 0) + 1);
int max = Collections.max(hashMap.values());
int cnt = 0;
int result = 0;
for (Map.Entry<Integer, Integer> entry : hashMap.entrySet()) {
if (entry.getValue() == max) {
cnt++;
result = entry.getKey();
}
}
return cnt == 1 ? result : -1;
}
public static void main(String[] args) {
Mode mode = new Mode();
System.out.println(mode.solution(new int[]{1, 2, 3, 3, 3, 4})); // 3
System.out.println(mode.solution(new int[]{1, 1, 2, 2})); // -1
System.out.println(mode.solution(new int[]{1})); // 1
}
}