(備忘録)AtCoderをやって15(Guidebook)
問題
自分の回答(他の方の回答参照しつつ)
まずsort_byの使い方で苦戦しました。さらに番号を要素にどう持たせて出力するかで悩みました。 空の配列を用意して、timesのブロックで渡した引数を配列に入れていけば良かったですね。 その後sort_by!で文字列、かつ点数の降順で並び替えを行いそれをeachの中でputsをしています。
N = gets.to_i arr = [] N.times do |i| s, p = gets.split arr << [i+1, s, p.to_i] end arr.sort_by!{|i, s, p| [s, -p]} arr.each do |a| puts a[0] end
その他回答
最後のputsの部分をmapで書いている。これだともっと簡潔に書けるんですね。
n=gets.to_i q=[] n.times do |i| s,n=gets.split n=n.to_i q<<[s,-n,i+1] end puts q.sort.map{|a,b,c| c}