자바 알고리즘 문제

최빈값 구하기

쿠키키키키 2024. 5. 10. 17:18

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 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 을 반환하고 

그밖에 경우는 하나일테니 가장 첫번째인 수를 답에 반환해주면 된다.!!

 

'자바 알고리즘 문제' 카테고리의 다른 글

문자 개수 세기  (0) 2024.05.14
옹알이(1)  (0) 2024.05.11
다항식 더하기  (0) 2024.05.08
유한소수 판별하기  (0) 2024.05.07
저주의 숫자 3  (0) 2024.05.03