##はじめに
AtCoder過去問のB問題、Booby PrizeをRubyでといて見ました。
問題文はこちらから確認してください↓
よろしくお願いします!!
##B-Booby Prize
まずは入力受け取りですね。
人数を受け取るのと、スコアの受け取りですね。
N = gets.to_i
A = gets.split.map(&:to_i)
正直Nの人数に関してはAの配列の要素の数=人数になるので必要ありませんでした。
ブービー賞は最下位から二番目のスコアになるので、配列の中身を降順に並び替えて、二番目のスコア、つまりインデックス数の1がブービーのスコアになります。変数booby_scoreに値を代入します。
配列の中身を降順に並び替えるには.sort.reverse
で並び替えることができます。
N = gets.to_i
A = gets.split.map(&:to_i)
booby_score = A.sort.reverse[1]
これでbooby_scoreには最下位から二番目の値が入っています。
次に配列Aの中にbooby_scoreが何番目かを調べます。
これにはインデックス数を利用します。
index()メソッドを配列に対して使えば、渡した引数と同じ値が配列の何番目に存在するのかをインデックス数で返してくれます。
インデックス数で返ってくるので+1した数字が選手番号になります。
N = gets.to_i
A = gets.split.map(&:to_i)
booby_score = A.sort.reverse[1]
puts A.index(booby_score) + 1
##最後に
他の解き方などあれば教えてください!
また便利なメソッドなどもあればご教授いただけると幸いです!