AtCoder ABC 008 B – 投票 Python解説

スポンサーリンク

投票

とある組織で、リーダーを選ぶ選挙が行われた。
組織は N 人の構成員で構成されており、各人は最もリーダーにふさわしい人物の名前を書いた。
リーダーは、得票数が最も多い人物が選ばれることになっている。
得票数が最も多い人物の名前を出力せよ。得票数が最も多い人物が複数いる場合は、そのうちどの名前を出力してもよい。

AtCoder Beginner Contest 008

人物名とそれぞれの得票数を同時に保持したいので連想配列を使います。

n = int(input())
dic = {}
 
for i in range(n):
    a = input()
    if a in dic:   # *1
        dic[a] += 1
    else:
        dic[a] = 1
        
cnt = 0
ans = ""
for key, value in dic.items():  # *2
    if value >= cnt:
        cnt = value
        ans = key
        
print(ans)

(*1)人物名を標準入力で受け取ったら、dic内に名前があるか確認し、
すでに名前があれば票数+1、まだ名前がなければ票数を1にしています。

(*2)人物名と得票数をdic.itemsで取得し、得票数がcntより大きければansの人物名を更新しています。
最後にansを出力して完了です。