문제설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한사항
입출력 예
| array | result | 
|---|---|
| [1, 2, 3, 3, 3, 4] | 3 | 
| [1, 1, 2, 2] | -1 | 
| [1] | 1 | 
입출력 예 설명
입출력 예 #1
입출력 예 #2
입출력 예 #3
풀이
1.기본 배열에서 중복을 제거한 배열을 얻는다.
2.등장 빈도를 기록할 배열을 생성하고 반복문으로 등장횟수를 기록한다.
3.최대등장횟수와 최빈수의 인덱스를 얻는다.
4.최빈수가 중복되는지 확인 할 변수를 만든다.
5.최빈수가 중복될 경우(duplication>1) -1을 리턴하고, 
	그렇지 않을경우 중복이 제거된 배열에 최빈수 인덱스(maxIndex) 값을 넣고 
    그 값(number[maxIndex])을 리턴한다.
import java.util.Arrays;
import java.util.stream.IntStream;
class Solution {
	public int solution(int[] array) {
		int[] number = Arrays.stream(array).distinct().toArray();
		//중복이 제거된 배열을 얻음
        
        int[] count = new int[number.length];
		//빈도를 카운트할 배열생성
        for (int i = 0; i < number.length; i++) {
			for (int j = 0; j < array.length; j++) {
				if (number[i] == array[j]) {
					count[i]++;
				}
			}
		}
		//빈도 카운드
        
		int max = Arrays.stream(count).max().getAsInt();
		//최대 등장횟수 
        
        int maxIndex = IntStream.range(0, count.length)
        .filter(i-> count[i]==max).findFirst().orElse(-1);
		//최빈수의 인덱스
        
        int duplication = (int)Arrays.stream(count)
        .filter(x -> x==max).count();
		//최빈수의 중복여부 확인
        
		if(duplication>1) {
			return -1;
		}else {
			return number[maxIndex];
		}
		
	}
}참고