(備忘録)AtCoderをやって15(Guidebook)

問題

atcoder.jp

自分の回答(他の方の回答参照しつつ)

まず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}