LoginSignup
30
26

More than 3 years have passed since last update.

【paizaスキルチェック】Rubyでの標準入力の受け取り方

Last updated at Posted at 2020-04-26

はじめに

プログラミングを始めた頃、paizaのスキルチェックを始めた時に標準入力で困ったので、同じような人のために、paizaの標準入力の受け取り方を書いていきます。

値が一つだけの場合の標準入力の受け取り方

一番シンプルなパターンですね。
例えば下図のような標準入力があったとします。

標準入力
5

getsメソッドで受け取れます。

 input = gets

paizaの標準入力は文字列で与えられます、今回は数字ですのでこのままだと計算したり大小比較ができないので、文字列から数値に変換しましょう。to_iメソッドを使うと可能です。

 input = gets.to_i

getsは複数回使うと次の標準入力を受け取ってしまうので、受け取った値を何回も使いたいときは変数に代入しておきましょう。今回はinputという名前の変数にしていますが、a = gets , number = getsとかでも大丈夫です。

複数の値が一行にある場合の標準入力の受け取り方

1行に複数の値があった場合です。

paizaだと複数の値に半角スペースを挟んだ文字列が渡されます。

標準入力
5 10 20

後ろに.chomp!.split(" ")をつけます

.chomp!が改行を消すメソッドです、これをつけないと末尾に改行の記号がくっついてしまいます。

.split(" ")が文字列を分解して配列に変換するメソッドです。引数に" "
を渡すことで半角スペースを区切りにして配列になります。

 input = gets.chomp!.split(" ")

出力してみると

p input
 => ["5", "10", "20"]

文字列でなく数値として受け取りたい場合はさらにmapメソッドを使いましょう。配列の値を一個ずつ取り出して数値に変換していきます。

 input = gets.chomp!.split(" ").map{|n| n.to_i}

出力してみると

p input
 => [5, 10, 20]

複数行にわたる値の標準入力を受け取り方

複数行に値があった場合です。

paizaの場合、大抵一つ目の標準入力にこの後の標準入力の行数を与えてくれるので、それを利用します。
今回で言うと3ですね。

標準入力
3
5
10
20

まず最初の標準入力を受け取りましょう。

N = gets.to_i

続いてこの値を用いて複数行の標準入力を受け取っていきます。

今回は5, 10, 20をそれぞれ配列に入れていく形で受け取っていきましょう。

timesメソッドを使います。


numbers = []

N.times do
  numbers << gets.to_i
end

numbersと言う空の配列を用意して、N回標準入力を受け取ってnumbersに入れていくと言う流れです。

出力すると

p numbers
=> [5, 10, 20]

これで標準入力が受け取れるので、受け取った値を使って問題を解いていけますね!

30
26
1

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
30
26