/*
최빈값(MODE) : 해당 범위의 데이터에서 가장 많이 나온 값
    - 조건 : 점수와 같이 0부터 100점까지의 범위로 한정
    - 최댓값 알고리즘의 확장
    - 범위를 인덱스로 처리
    => 인덱스의 카운트(COUNT)의 최댓값(MAX) 
*/
#include 
void main(void){
    //[1] Input : 자료구조
    int data[10] = {1, 2, 5, 4, 5, 3, 3, 5, 5, 8}; // 인위적으로 5를 2개
    int count[10 + 1] = {0, }; // N + 1개
    int mode = 0; // 최빈값
    int max = 0; // INT_MIN
    int i; 
    //[2] Process : 알고리즘 : 최빈값
    //[A] 데이터의 인덱스의 카운트 알고리즘 적용
    for (i = 0; i < 10; i++) {
        count[ data[i] ]++; // 데이터를 인덱스로 보자... 그것의 카운트 증가 
    }
    //[B] 최댓값 알고리즘 적용
    for (i = 0; i <= 10; i++) {
        if (max < count[i]) {
            max = count[i]; // MAX 알고리즘
            mode = i; 
        }
    }
    //[3] Output : 콘솔, 윈도우, 웹, 장치
    printf("최빈값 : %d, %d번 나타남\n", mode, max); // 5가 2번 나타남
}