[BOJ/Python]10384号ファンマップ


この問題は、まず配列を作成してすべてのアルファベットを含む配列とアルファベットの数を計算し、文字列に存在するアルファベットに対応するインデックス値を増やし、その配列でアルファベット数を計算するために使用される最小数に基づいて適切な出力値を出力することによって解決されます.入力した文字列には大文字と小文字を含めることができるので、まずlow関数で文字列をすべての小文字に変換します.
  • nと入力します.
  • 配列アルファベットテーブルにすべてのアルファベットを格納します.
  • 0からnまでのiに対してfor文を行う.(エンクロージャ数で繰り返す)
  • 文字まで数えると、26個の0を持つcnt配列が使用されます.
  • 文字列caseと入力します.
  • caseを小文字に変換します.
  • 0から箱長まで繰り返されるjを1回転する.
    ->case[j]がアルファベットアレイに存在する場合、cntアレイのcase[j]に対応するアルファベットアレイのインデックス要素が1増加します.
  • cntアレイの最小値が0の場合、「Case(i+1):Not a pangram」が出力されます.
  • cntアレイの最小値が1の場合、「Case(i+1):Pagram!」出力します.
  • cntアレイの最小値が2の場合、「Case(i+1):Double pangram!!」出力します.
  • の他にも「Case(i+1):Triple Pagram!!」出力します.
  • Code

    n=int(input())
    alphabet=['a','b','c','d','e','f','g','h','i','j','k','l','n','m','o','p','q','r','s','t','u','v','w','x','y','z']
    for i in range(n):
        cnt = [0] * 26
        case=str(input())
        case=case.lower()
        for j in range(len(case)):
            if case[j] in alphabet:
                cnt[alphabet.index(case[j])]+=1
        if min(cnt)==0:
            print('Case %d: Not a pangram'%(i+1))
        elif min(cnt)==1:
            print('Case %d: Pangram!'%(i+1))
        elif min(cnt)==2:
            print('Case %d: Double pangram!!'%(i+1))
        else:
            print('Case %d: Triple pangram!!!'%(i+1))