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