코딩테스트/C

백준 1175번 단어공부

호중조 2024. 7. 6. 11:31
#include <stdio.h>
#include <string.h>

/*Define max legnth of input*/
#define MAX 1000001
#define CAPGAP 65
#define LOWGAP 97
#define LENALPHABET 26

int main(void)
{
    /*Declare variables*/
    char S[MAX];
    int num[LENALPHABET]; /*Variable for counting*/
    int len_S;
    int i;
    int ascii;
    int maximum;
    int maximum_idx;
    int cnt;
    char maximumAlphabet;


    /*Initialize variables*/
    cnt = 0;
    maximum = 0;

    for (i=LENALPHABET-1; i!=-1; i--)
    {
        num[i] = 0;
    }

    /*Get input*/
    scanf("%[^\n]*c",&S);

    len_S = strlen(S);

    /*Count number of alphabet*/
    for (i = len_S-1; i!=-1; i--)
    {
        ascii = (int)S[i];
        if (ascii >= LOWGAP)
        {
            num[ascii-LOWGAP]++;
        }
        else
        {
            num[ascii-CAPGAP]++;
        }
    }

    /*Calculate maximum number of alphabet and get index*/
    for (i = (LENALPHABET-1); i != -1; i--)
    {
        if (maximum < num[i])
        {
            maximum = num[i];
            maximum_idx = i;
        }
        else
        {

        }
    }

    /*Calculate number of maximum value*/
    for (i = (LENALPHABET-1); i != -1; i--)
    {
        if (maximum == num[i])
        {
            cnt++;
        }
    }

    /*Set value to print*/
    if (cnt==1)
    {
        maximumAlphabet = (char)(maximum_idx + CAPGAP);
    }
    else
    {
        maximumAlphabet = '?';
    }

    printf("%c\n", maximumAlphabet);

}