コンテンツへスキップ

【AtCoder用】標準入力の取り方いろいろ

  • by

大体覚えてきたけど、ちょくちょく過去投稿などを見返したり調べたりするので、この投稿でまとめておく。

6/13、とりあえずミニマムで公開。随時増やしていく予定。
7/24、ちょっと直したり追加したりした。

■数字が1つ

標準入力

1

●文字列のまま

x = gets
p x
# => "1"
  • 変数名は適当なので、問題文に合わせる
  • getsだけだと文字列で返ってくる

●文字列のまま(chompで改行コードを削除)

x = gets
p x
# => "1\n"

x = gets.chomp
p x
# => "1"
  • 標準入力で最後に改行が入っている場合、\nが入ってしまう
  • これを削除するにはchompを追加する

●整数にする

x = gets.to_i
p x
# => 1
  • to_iするとinteger(整数)になる
  • to_iすると、一緒に改行コードも取ってくれるのでchompは不要

■数字が1行に2つ

標準入力

1 2

●1つの変数に配列で入れる

x = gets.split.map(&:to_i)
p x
# => [1, 2]

●それぞれ別の変数に入れる

x, y = gets.split.map(&:to_i)
p x
p y
# => 1
# => 2

■数字が2行に1つずつ

標準入力

1
2

●それぞれ別の変数に入れる

x = gets.split.map(&:to_i)
y = gets.split.map(&:to_i)
p x
p y
# => 1
# => 2

■1行目に、2行目以降で何この数字が並ぶのかが入り、2行目以降に数字が複数行に1つずつ

標準入力

4
1
2
3
4

●1行目で取得した数を使う方法

n = gets.to_i
lines = n.times.map do |line|
  line = gets.to_i
end
p lines
# => [1, 2, 3, 4]

●1行目をスルーする方法

n = gets.to_i
lines = readlines
p lines.map { |line| line.to_i}
# => [1, 2, 3, 4]