[白俊]段階別解答#1157-単語学習


質問する


アルファベットの大文字と小文字の単語を指定した場合は、この単語で最も使用されるアルファベットが何であるかを決定するプログラムを作成します.ただし、大文字と小文字は区別されません.
入力
最初の行には、アルファベットの大文字と小文字からなる単語が表示されます.与えられた単語の長さは10万を超えない.
しゅつりょく
最初の行は、この語で最も多く使われているアルファベットを大文字で出力します.しかし、最も使用頻度の高いアルファベットが複数存在する場合?出力します.

に答える


アイデア
1.リスト重複除外による目標データの削減による計算時間の短縮
2.DictionaryからValueのMaxのKey値を取得する
testString = input().upper()

#중복제거
testSet = set(list(testString))
testList = list(testSet)

#문자열에서 문자 쓰인 개수 Get Dictionary
def getCountCharInString(argList):
    string = argList
    getDict = {}
    for char in string:
        getDict[char] = list(testString).count(char)
    return getDict

#String에서 가장 많이 쓰인 알파벳 출력
#문자별 쓰인 개수 Dictionary
getDict = getCountCharInString(testList)
#Dictionary 값 중 제일 큰 키 값 가져오기
maxKey = max(getDict,key=getDict.get)
#Dictionary 값에 대한 List
valueList = [value for key,value in getDict.items()]
#List 안에 Max 값 중복 존재 확인
if valueList.count(getDict[maxKey]) == 1:
    print(maxKey)
else:
    print('?')
レビュー
Functionには1つの機能しか含まれていないので、関数を宣言する必要のない機能も関数化されています.
結果は時間の繰り返しです.
関数宣言時にも変数宣言が行われています.これもメモリを使用するため、パフォーマンスに影響を与える可能性があります.
最終的には、必要な関数を宣言するのが望ましいが、機能は1つしか含まれていない.
ソース:https://www.acmicpc.net