class MODE_Algorithm {
public static void main(String[] args) {
int[] array = {1, 2, 3, 3, 3, 4};
int mode = 0; // 최빈값을 담을 변수
int[] index = new int[1000]; // 0~999까지 인덱스의 카운터
int max = 0; // 최대값 저장을 위한 변수
for(int i=0; i<array.length; i++){
index[array[i]]++; // 배열에 담긴 정수의 인덱스 카운터
}
for(int i=0; i<index.length; i++){
if(max < index[i]){
max = index[i]; // 인덱스 안에 든 값 중 가장 큰 값을 max 변수에 저장
mode = i; //
}
}
int count = -1; // 최빈값이 2개이상인 경우를 찾기 위한 count 변수
for(int i=0; i<index.length; i++){
if(index[mode] == index[i]){ // index 배열을 순차적으로 탐색하면서 최빈값의 빈도가 동일한 경우가 존재하는 경우 count
count++;
}
}
if(count > 0){
System.out.println("최빈값이 둘 이상입니다.");
} else{
System.out.println("최빈값: " + mode);
}
}
}