LoginSignup
0
0

More than 1 year has passed since last update.

[Ruby] AtCoder 過去問 B- Booby Prize

Posted at

はじめに

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

最後に

他の解き方などあれば教えてください!
また便利なメソッドなどもあればご教授いただけると幸いです!

0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0