-
問題6 n回文字列表示して改行区切りする
- 期待する出力
- n 回 suzutuki と改行区切りで出力してください。
suzutuki ... suzutuki
-
- 入力例1
-
2
- 出力例1
-
suzutuki suzutuki
解答どちらでもOK
e = gets.to_i puts "suzutuki\n" * e
n = gets.to_i n.times { puts 'suzutuki' }
問題5 最初のnを省く
整数 n と n 個の整数 a_1, …, a_n が改行区切りで与えられるので、
a_1, …, a_n を与えられた順に、改行区切りで出力してください。
- 入力される値
- 入力は以下のフォーマットで与えられます。
n a_1 ... a_n
1 行目には整数 n が与えられ、2 行目から (n+1) 行目にかけては n 個の整数 a_1, …, a_n が改行区切りで与えられます。入力値最終行の末尾に改行が1つ入ります。文字列は標準入力から渡されます
- 期待する出力
- a_1, …, a_n を入力された順に改行区切りで出力してください。
a_1 ... a_n
入力例1
- 2
1
2
- 出力例1
- 1
2
解答1 popで最初を省く
e = readlines.map(&:to_i) c = e.length puts e.pop(c-1)
解答2 繰り返し処理でやる
n = gets.to_i
n.times do
a = gets.to_i
puts a
end
- 繰り返します。
n.times do
とend
の間に今回はa = gets.to_i
を書きます。これにより n 行の入力を受け取ることになります。- 文字列として a を出力しても正解になりますが、整数として入力されるので、to_i メソッドを使って変換を行っています。
問題6 a_1, …, a_n で最大値を表示.max
-
n a_1 ... a_n
1 行目には整数 n が与えられ、 2 行目から (n + 1) 行目にかけては n 個の整数 a_1, …, a_n が改行区切りで与えられます。
- 期待する出力
- a_1, …, a_n の中で最も大きい数を出力してください。
- 条件
- すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ n ≦ 50・各 a_i(1 ≦ i ≦ n)について 1 ≦ a_i ≦ 50
- 入力例1
- 2
4
7
- 出力例1
- 7
解答
n = readlines.map(&:to_i) puts n.max
別解
n = gets.to_i arr = Array.new(n) n.times { |i| arr[i] = gets.to_i } puts arr.max
- Ruby では
arr = Array.new(n)
と書くことで長さ n の配列 arr を用意することができます。 - ブロックの冒頭に
|i|
と書くと、「いま何回目のループか」が i に順々に代入されます。初回は 0 回目なので注意して下さい。 - arr のインデックス i の要素に値 x を代入するには
arr[i] = x
のように書きます。 - 今回は入力値を整数に変換して代入したいので
a[i] = gets.to_i
と書きます。 - 配列内の最大値は
arr.max()
のように書くと取得することができます。
- 入力される値
- 入力は以下のフォーマットで与えられます。
n
1行目に整数nが与えられます。
入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。
- 期待する出力
- suzutuki と n 回、半角スペース区切りで出力してください。最後の suzutuki の後には半角スペースは入れず、改行を入れ、余計な文字、空行を含んではいけません。
suzutuki suzutuki ... suzutuki
条件
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ n ≦ 50
入力例1
2
出力例1
suzutuki suzutuki
入力例2
3
出力例2
suzutuki suzutuki suzutuki
解答
最後の半角スペースを取り除くには.chopを使う
e = gets.to_i f = "suzutuki " * e puts f.chop
別解
n = gets.to_i
ans = 'suzutuki'
(n - 1).times { ans += ' suzutuki' }
puts ans
- 方針の通り実装しています。
- まず
ans = 'suzutuki'
で ans を初期値'suzutuki'
で用意します。 - その後、
ans += ' suzutuki'
を n-1 回繰り返す繰り返し処理を書けばよいです。 - 上記から分かるように Ruby では文字列の連結を + 演算子を使って行うことができます。
解答例 2
n = gets.to_i
arr = Array.new(n)
n.times { |i| arr[i] = 'suzutuki' }
puts arr.join(' ')
- Array クラスの join メソッドを使う方法です。
- join メソッドは
arr.join(' ')
のように使います。この場合の返り値は arr の要素間に' '
を挟んだ文字列です。
問題
整数 n が与えられ、その後に n 個の整数 a_1, …, a_n が半角スペース区切りで与えられるので、a_1, …, a_n をそのままの順番で改行区切りで出力してください。
- 入力される値
- 入力は以下のフォーマットで与えられます。
n a_1 a_2 ... a_n
1 行目には整数 n が与えられ、2 行目には半角スペース区切りの n 個の数 a_1, …, a_n が 1 行で与えられます。
- 期待する出力
- a_1, …, a_n をそのままの順番で改行区切りで出力してください。
a_1 ... a_n
- 入力例1
- 2
1 5
- 出力例1
- 1
5
- 入力例2
- 3
4 30 12
- 出力例2
- 4
30
12
解答
#"4 30 12" gets #pの場合p gets.split.map(&:to_i)数値にちゃんとする puts gets.split
別解
n = gets.to_i
a = gets.split(' ').map(&:to_i)
a.each { |num| puts num }
gets.split(' ').map(&:to_i)
とすることで 1 行の入力を半角スペースで区切り、すべての要素を整数に変換して配列で受け取ることができます。配列.each do |変数|
のように書くと配列
の各要素が変数
に代入され、繰り返し処理が行われます。
解答例 2
n = gets.to_i
a = gets.split(' ').map(&:to_i)
puts a
puts 配列
のように書くと配列
の各要素を改行区切りで出力することができます。
問題
10
813
100
と入力されるので、↓のように出力してください。
10-813-100
解答
a = gets.chomp b = gets.chomp c = gets.chomp puts a + "-" + b + "-" + c
別解
line = readlines.map(&:to_s) puts line[0].chomp + "-" + line[1].chomp + "-" + line[2]
別解2
line = readlines.map(&:chomp) puts line[0] + "-" + line[1] + "-" + line[2]
別解3 これが一番良い(joinで任意の文字を足してつなげる)
line = readlines.map(&:chomp) puts line.join('-')