ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준/C] 1157번
    Problem Solving 2022. 7. 13. 01:15

    입력된 문자열에서 가장 많이 사용된 알파벳을 찾는 문제이다.

    가장 많이 사용된 알파벳이 두 개 이상일 경우 물음표를 출력하고, 아닐 경우 그 알파벳을 대문자로 출력한다.

     

    소문자로 출력되게 해 놓고 왜 틀렸지 하며 한참동안 뻘짓했다.

     

    문제를 잘 읽자.. 

    #include <stdio.h>
    
    #define _CRT_SECURE_NO_WARNINGS
    #define SIZE 26
    
    void    put_zero(int arr[])
    {
        for (int i = 0; i < SIZE; i++)
            arr[i] = 0;
    }
    
    int    get_max_idx(int arr[])
    {
        int    max;
        int    max_idx;
        
        max = arr[0];
        max_idx = 0;
        for (int i = 0; i < SIZE; i++)
        {
            if (arr[i] > max)
            {
                max = arr[i];
                max_idx = i;
            }
        }
        return (max_idx);
    }
    
    int    is_duplicate(int arr[], int max_idx)
    {
        int    max_cnt;
        
        max_cnt = 0;
        for (int i = 0; i < SIZE; i++)
        {
            if (arr[i] == arr[max_idx])
                max_cnt++;
            if (max_cnt > 1)
                return (1);
        }
        return (0);
    }
    
    char    get_most_used(char str[])
    {
        int    arr[SIZE];
        int    i;
        int    max_idx;
        
        i = 0;
        put_zero(arr);
        while (str[i] != 0)
        {
            if (str[i] >= 'a' && str[i] <= 'z')
                arr[str[i] - 'a']++;
            else if (str[i] >= 'A' && str[i] <= 'Z')
                arr[str[i] - 'A']++;
            i++;
        }
        max_idx = get_max_idx(arr);
        if (is_duplicate(arr, max_idx))
            return (0);
        return (max_idx + 'A');
    }
    
    int    main(void)
    {
        char    str[1000001];
        char    res;
        
        scanf("%s", str);
        if (!(res = get_most_used(str)))
            printf("?\n");
        else
            printf("%c\n", res);
        return (0);
    }

    'Problem Solving' 카테고리의 다른 글

    [백준/C] 2908  (0) 2022.07.13
    [백준/C] 1152  (0) 2022.07.13
    [백준/C] 2839번 - 설탕 배달  (0) 2022.05.14
    [백준/C] 10250번 - ACM 호텔  (0) 2022.05.12
    [백준/C] 2869번 - 달팽이는 올라가고 싶다  (0) 2022.05.12
Designed by Tistory.