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を代入する必要ないですね・・・。