【Ruby学習】AtCoderでよく使う入出力について解説
RubyをAtCoderで使う
AtCoder公式HP日本最大手の競技プログラミングサイト「AtCoder」の問題を「Ruby」で解きたい場合、はじめの一歩として文字や数字の入出力を理解する必要があります。
「AtCoder」でよくある数列や文字列の入出力に対応して、Rubyのコードを書いてみたので参考にしてください。
「AtCoder」について詳しく知りたい方は 「AtCoderとは?コンテストの種類、始め方から実技検定についても紹介」を閲覧してみてください。
数列の入出力
整数の入出力
整数の入力はgetsメソッドで読み込んだ値をto_iメソッドで整数に変換することで読み込みます。
N = gets.to_i
puts N.class
puts N
#入力
4
#出力
Integer
4
浮動小数点数の入出力
浮動小数点数の入力はgetsメソッドで読み込んだ値をto_fメソッドで浮動小数点数に変換することで読み込みます。
P = gets.to_f
puts P.class
puts P
#入力
3.1415
#出力
Float
3.1415
一桁ずつ配列に入力
数列を一桁ずつ配列に読み込みたい場合、getsメソッドで値を読み込み、splitメソッドで配列の区切りを指定(何も書かないことで一桁ずつ入力される)、chompメソッドで改行コードの入力を防ぎます。
ary = gets.chomp.split('').map(&:to_i)
puts ary[0].class
print ary
#入力
341
#出力
Integer
[3, 4, 1]
数列間隔が空白の数列群を配列に入力
数列間隔が空白の数列群を一つずつ配列に読み込みたい場合、getsメソッドで値を読み込み、splitメソッドで配列の区切りを空白に指定(" ")、chompメソッドで改行コードの入力を防ぎます。
ary = gets.chomp.split(' ').map(&:to_i)
puts ary[0].class
print ary
#入力
100 2 38
#出力
Integer
[100, 2, 38]
数列間隔が空白の数列群を変数に入力
数列間隔が空白の数列群を複数の変数に読み込みたい場合、入力したい複数の変数を","で区切って、getsメソッドで値を読み込み、splitメソッドで配列の区切りを空白に指定(" ")、chompメソッドで改行コードの入力を防ぎます。
a,b = gets.chomp.split(' ').map(&:to_i)
puts a.class
puts a,b
#入力
38 91
#出力
Integer
38
91
文字列の入出力
文字の入出力
文字の入力はgetsメソッドで読み込むだけです。
str = gets
puts str.class
puts str
#入力
moji
#出力
String
moji
一文字ずつ配列に入力
一文字ずつ配列に読み込みたい場合は、getsメソッドで文字列を読み込み、splitメソッドで配列の区切りを指定(何も書かないことで一桁ずつ入力される)、chompメソッドで改行コードの入力を防ぎます。
ary = gets.chomp.split("")
puts ary[0].class
puts ary.join
print ary
#入力
test
#出力
String
test
["t", "e", "s", "t"]
文字間隔が空白の文字列群を入力
文字間隔が空白の文字列群を一つずつ配列に読み込みたい場合、getsメソッドで値を読み込み、splitメソッドで配列の区切りを空白に指定(" ")、chompメソッドで改行コードの入力を防ぎます。
ary = gets.chomp.split(" ")
puts ary[0].class
puts ary.join
print ary
#入力
test pro g ram
#出力
String
testprogram
["test", "pro", "g", "ram"]
まとめ
今回はAtCoderでよく使う文字列と数列の入出力について解説してみました。
AtCoderを行うことが目的で、「Ruby」の学習が目的ではない場合、 プログラミング言語は「C++」「Python」などを学習してみてもいいかもしれません。
多くの人が使っている言語は解説も上がりやすいですし、色々な解答例を見て参考にすることができます。