【ABC201 B】「Do you know the second highest mountain?」を解く【Python3】

「AtCoder」解説一覧へ

AtCoder国にあるN個の山のうち、2番目に高い山の名前を答える問題です。

提出
n = int(input())
li=[list(map(str,input().split())) for _ in range(n)]
li.sort(reverse=True, key=lambda x: int(x[1]))
print(li[1][0])

入力Nを受け取った後、N個の山の名前と高さを、リスト内包表記を用いてリストにします。

入力例2の場合、リストは以下のようになっています。

[['Kita', '3193'], ['Aino', '3189'], ['Fuji', '3776'], ['Okuhotaka', '3190']]

このリストを2番目の要素で降順ソートします。

ソートに「reverse=True」をつけると降順になり、「key=lambda x: int(x[1])」をつけると、2番目の要素をキーにしたソートになります。

lambda式は無名関数といい、名前のない関数を作るときに使用します。

a = lambda x : x*2
print(a(4))       # > 8

入力例2のリストを2番目の要素で降順ソートすると以下のようになります。

[['Fuji', '3776'], ['Kita', '3193'], ['Okuhotaka', '3190'], ['Aino', '3189']]

2番目に高いの山の名前は、「li[1][0]」で取得できるのでこれを出力します。

【ABC201】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です