[Python] ABC008 B

問題

B – 投票

回答

名前を辞書で管理し、ソートします。

N = int(input())

dict_names = dict()
for _ in range(N):
    name = input()
    if name not in dict_names:
        dict_names[name] = 1
    else:
        dict_names[name] += 1

dict_names_sorted = sorted(dict_names.items(), key=lambda x:x[1], reverse=True)

print(dict_names_sorted[0][0])

defaultdict を使い、名前の取得を簡単にします。

key がない場合、エラーを起こさず指定した値をvalue にしてくれるので、記述が少し簡単になります。

import collections

N = int(input())

dict_names = collections.defaultdict(int)
for _ in range(N):
    name = input()
    dict_names[name] += 1

dict_names_sorted = sorted(dict_names.items(), key=lambda x:x[1], reverse=True)

print(dict_names_sorted[0][0])

Python には、Counter という数え上げを簡単に行えるオブジェクトが標準にあり、それを利用するとさらにコードが簡単になります。

import collections

N = int(input())
names = [input() for _ in range(N)]

dict_names = collections.Counter(names)

print(dict_names.most_common(1)[0][0])