Blog

최빈값 구하기

문제 #

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

제한사항 #
  • 0 < array의 길이 < 100
  • 0 ≤ array의 원소 < 1000

나의 풀이 #

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        int[] count = new int[1001];
        int maxcnt = -2;
        
        for (int i=0; i<array.length; i++){
            count[array[i]]++;
        }
        
        for (int j=0; j<count.length; j++){
            if(maxcnt < count[j]) { 
                maxcnt = count[j]; //최대카운트 횟수에 j의 카운트횟수 대입
                answer = j; //j는 최빈값
            }
            else if(maxcnt==count[j]){ //횟수가 같은값이 있을경우
                answer = -1;
            }
        }
        
        return answer;
    }
}

다른 사람의 풀이 #

import java.util.*;
class Solution {
    public int solution(int[] array) {
        int maxCount = 0;
        int answer = 0;

        Map<Integer, Integer> map = new HashMap<>();

        for(int number : array) {
            int count = map.getOrDefault(number, 0) + 1;

            if(count > maxCount) {
                maxCount = count;
                answer = number;
            }

            else if(count == maxCount) {
                answer = -1;
            }

            map.put(number, count);
        }

        return answer;
    }
}

관련개념 학습 #

getOrDefault : 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드 getPrDefault(Object key, V DefaultValue)

  • 매개변수 : 이 메서드는 두개의 매개변수를 허용
  • key : 값을 가져와야 하는 요소의 키
  • defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값
  • 반환값 : 찾는 key가 존재하면 해당 key에 매핑되어 있는 값을 반환하고, 그렇지 않으면 디폴트 값이 반환