최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
import java.util.*;
class Solution {
public int solution(int[] array) {
int answer = 0;
HashMap<Integer,Integer> map=new HashMap<>();
for(int i=0; i<array.length;i++){
if(map.get(array[i])==null){
map.put(array[i],1);
}else if(map.get(array[i])>0){
map.put(array[i], map.get(array[i])+1);
}
}
int bigNum=0;
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
bigNum=Math.max(bigNum , entry.getValue());
}
List<Integer> foundKey= new ArrayList<>();
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (entry.getValue().equals(bigNum)) {
foundKey.add(entry.getKey());
}
}
if(foundKey.size()>1){
answer=-1;
}else {
answer=foundKey.get(0);
}
return answer;
}
}
일단 각각의 숫자와 그 개수를 한번에 저장하기 위해
map 형태 를 만들어주고 그 안에 저장해두었다.
그리고 최댓값의 개수는 무엇인지 bigNum 에 갱신하고
그 bigNum 을 가지고 있는 key 값이 무엇인지 foundKey 리스트에 저장해두었다
만약 그 리스트의 길이가 2 이상이면 같은 최대 개수를 가진 수가 2이상이라는 소리이니
답은 -1 을 반환하고
그밖에 경우는 하나일테니 가장 첫번째인 수를 답에 반환해주면 된다.!!