Ruby paizaレベルアップ問題集(文字と整数の組のソート2-3)

paizaラーニング(初心者〜中級者向けのプログラミング学習サービス)の問題集をやってみる。

paiza.jp

共通ルール

入力

  • 入力値最終行の末尾に改行が1つ入ります。
  • 文字列は標準入力から渡されます。

出力

  • 最後は改行し、余計な文字、空行を含んではいけません。

5. 数字のみの出力 (paizaランク D 相当)

1行目に行数を表す整数 n、続く n 行で n 個の「文字」と「整数」の組が空白区切りで入力されます。 n 個の整数だけをそのまま順に出力してください。

入力される値
n
S_1 D_1
S_2 D_2
...
S_n D_n

期待する出力
n 個の整数を順に改行区切りで出力してください。

条件
・1 ≦ n ≦ 10,000
・-10,000 ≦ D_i ≦ 10,000 (ただし、1 ≦ i ≦ n)
・S_iは1つの半角英文字

入力例

4
S 1
F 2
E 5
Y 6

出力例

1
2
5
6

自分の解答

n = gets.to_i
ary = []
n.times do
  a, b = gets.split
  ary << b
end
puts ary

ハッシュを使うバージョンも書いてみたが、ハッシュだと順番が変わってしまうことがあるためテストをパスできなかった。順番に意味があるときは配列がよい。

n = gets.to_i
hash = {}
n.times do
  a, b = gets.split
  hash[a] = b
end
puts hash.values
# 順番が変わってしまうためNG

6. 昇順ソート出力 (paizaランク D 相当)

1行目で整数 n が与えられ、2行目で n 個の整数が与えられます。
n 個の整数を昇順に出力してください。

入力される値
n
a_1 a_2 ... a_n

期待する出力
a_1からa_nの整数を昇順に並び替えて、出力してください。

条件
1 ≦ n ≦ 100
-3,000,000 ≦ a_i ≦ 3,000,000 (ただし、1 ≦ i ≦ n)

入力例

8
90 777 8888 121 333 4 29 2

出力例

2
4
29
90
121
333
777
8888

自分の解答

n = gets
numbers = gets.split.map(&:to_i)
puts numbers.sort

問題を見るためのチケットがなくなってしまったので今日はここまで。配列は結構思い通りに操作できるので楽しい。

スキルチェックをやればチケットが手に入るのだが、一番易しいDランクの問題はほぼすべて解き終わっていて、それ以上のランクはそこそこ時間がかかるのでなかなか難しいところ。

レベルアップ問題集をやればBランクまでいけるとのことなので頑張ろう。