単語を習う


Javaで説明した内容ですが、cotte言語をPythonに変更することにし、解答の問題を再解答しています.
質問リンク
Javaで解読する場合
  • 文字列を1つずつ切り捨て、charの値を0に初期化された配列のインデックス1に増やします.
  • 配列を繰り返して、配列の中で最大の値を探して、もし値が同じならば?出力すると、配列のインデックスに64を付けて文字を出力します.
  • import java.io.*;
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String str = br.readLine().toUpperCase();
            int length = str.length(); // 문자열의 길이
            int[] arr = new int[27];
            Arrays.fill(arr, 0);
    
            for(int i=0;i<length;i++){
                arr[str.charAt(i)-64]++;
            }
    
            int max = 0 ;
            int maxIndex = 0;
            int same = 0;
            char result = ' ';
            for (int j = 0; j < 27; j ++){
                if (arr[j] > max){
                    max = arr[j];
                    maxIndex = j;
                    same = 0;
                }else if (max > 0 && max == arr[j]){
                    same++;
                }
            }
    
            if (same > 0){
                result = '?';
            }else{
                result = (char)(maxIndex + 64);
            }
            System.out.println(result);
        }
    }
    Pythonで解くとき.

  • Javaと異なり、PythonはListを使用しています.
    リストのset関数には2つの特徴があります.
  • の繰り返しは許可されていません.
  • 順序
  • はありません.
  • したがって,入力された文字列に一度出現したとしても,出現するアルファベットが何であるかを調べることができる.

  • count関数で文字列に現れる文字の数を見つけます.
    set関数を用いて重複を繰り返して重複リストを除去することで,入力した文字列の個数を知ることができる.
    カウントした数字を順番にリストに追加します.

  • set関数で重複するリストとcountで1文字数を除去し、リストに追加されたリストのインデックスごとに同じ文字を指します.

  • 最も多く現れる文字はcountの最大値です.
    countを追加した配列に同じ最大値が2つ以上現れた場合?印刷

  • そうでなければ、その最大値が存在するインデックスの値を求め、削除された重複リストから求められたインデックスの位置の値を出力します.
  • # 대문자로 변경
    n = input().upper()
    # 중복되는 문자 제거
    n_list = list(set(n))
    
    # n(입력받은 문자)에서 n_list의 값이 몇번 나왔는지 검사
    count_list = []
    for a in n_list:
      count = n.count(a)
      count_list.append(count)
    
    # 리스트에서 가장 큰 값의 개수
    if count_list.count(max(count_list)) >= 2 :
      print("?")
    else :
      # 가장 큰 값이 있는 인덱스 찾기
      index = count_list.index(max(count_list))
      print(n_list[index])