Pythonの問題:Find the Runner-Up Score!

HackerRankのPythonの問題、Find the Runner-Up Score!を解いた。

問題

問題はFind the Runner-Up Score! | HackerRank

自分の解答

コード

if __name__ == '__main__':
    n = int(input())
    l = list(map(int, input().split()))

    l.sort(reverse=True)

    fst = l.pop(0)
    snd = l.pop(0)

    while fst == snd:
        fst = snd
        snd = l.pop(0)

    print(snd)

考え方

Listのうち2番めに大きい値をprintする問題。Setではないので、同じ値が複数入っている可能性がある。

Listにはsortメソッドが含まれているので、まず大きい値から順に並ぶようにソート。最大値が複数含まれる可能性があるため、1番めの値と2番めの値をリストから取り出して比較。

もし値が異なるようであれば、2番めの値がリスト全体で2番めに大きい値なのでPrintして終了。

もし値が等しいならば、リスト全体で2番めに大きい値はまだリストに残っているので、次の値の比較に移る。

Submitして通ったから気にしてなかったですが、fstにsndを代入する必要ないですね・・・。

この記事を書いた人

yoshikiito

都内でテストエンジニア&ブロガーをやっている@yoshikiitoです。

ソフトウェアエンジニアの学習方法や成長するための考え方、会社に依存せず自分の力で生きていけるエンジニアになる方法などについて興味があります。
こういった方法や考え方、自分が試したことなどをブログを通じて発信します。

仕事は主にソフトウェアテストやテスト自動化。
趣味は浦和レッズと読書と技術書を買って積むこと。

技術評論社から本を出すのが夢

この記事が気に入ったら
いいね!しよう

最新の情報をお届けします