単語を習う


質問する


[Bronze I]正解率39%
https://www.acmicpc.net/problem/1157

の意見を打診

  • 文字の配列を生成し、値を0に初期化します.
  • 入力
  • 文字列
  • 反復文逐字確認を使用して、対応するアルファベットのArray値を1増加します.
  • の新しい複文を使用して、最大の数字が何であるかを決定し、出力します.
  • 学識

  • は最初にforゲート内の終了条件でi<strlen(inputに入れられ、結果的にタイムアウトした.
    検索により、終了条件にstrlenを加えると、for文が繰り返されるたびにstrlen関数が呼び出されて長さ測定が行われることが分かった.
    ->新しいint変数にstrlenの値を加え、終了条件に入れて解決します.
  • ブロンズ問題で学ぶべきところもありますr,!!私を無視しないで!!!
  • コード#コード#

    #include <stdio.h>
    #include <string.h>
    
    int main(){
        int lists[26] = {0};
        int index = 0;
        int max_index = 0;
        char max_value='A';
        char input[1000001];
        scanf("%s", input);
    
        // printf("%d %d\n", 'a', 'z'); // 97 ~ 122 
        // printf("%d %d", 'A', 'Z'); // 65 ~ 90
        int len = strlen(input);
        for(int i=0; i<len; i++){
            if(input[i]>95)
                index = input[i]-97;
            else
                index = input[i]-65;
            lists[index]++;
        }
    
        for(int i=1; i<26; i++){
            if(lists[max_index]==lists[i])
                max_value = '?';
            else if(lists[max_index]<lists[i]){
                max_index = i;
                max_value = 'A'+i;
            }
        }
    
        printf("%c", max_value);
        return 0;
    }
    ``