[伯俊]BOJ 1157 JAVA


boj 1157単語を勉強する

質問する


アルファベットの大文字と小文字の単語を指定した場合は、この単語で最も使用されるアルファベットが何であるかを決定するプログラムを作成します.ただし、大文字と小文字は区別されません.

入力


最初の行には、アルファベットの大文字と小文字からなる単語が表示されます.与えられた単語の長さは10万を超えない.

しゅつりょく


最初の行は、この語で最も多く使われているアルファベットを大文字で出力します.しかし、最も使用頻度の高いアルファベットが複数存在する場合?出力します.

サンプルI/O



ソースコード

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        //A = 65, a = 97
        int[] alpha = new int[26]; //alpha[0] => A, alpha[25] => Z

        char[] str = br.readLine().toCharArray();

        for (int i = 0; i < str.length; i++) { //소문자 -> 대문자
            if ('a' <= str[i] && str[i] <= 'z') {
                str[i] -= 32;
            }

            alpha[str[i] - 65]++;
        }

        int max = 0;
        int idx = 0;
        boolean flag = true;

        for (int i = 0; i < 26; i++) {
            if(max == alpha[i]){
                flag = false;
                continue;
            }

            if (alpha[i] > max) {
                max = alpha[i];
                idx = i;
                flag = true;
            }
        }

        if (!flag) System.out.println("?");
        else System.out.println((char) (idx + 65));
    }
}

Comment


  • アスキーコードで配列インデックスにアクセス!
  • (ASCII)を参照してください.