日別アーカイブ: 2022年8月27日

paizaCランクレベルアップ問題と解答(2)Ruby

※スキルチェック問題ではありません。
規約により公式の解答コードそのままはよろしくないので、
オリジナルのコードにしています。

詳しくはコチラ

なるべくわかりやすい解説を付けました

問題4 入力の配列による保持 (paizaランク D 相当)

整数 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 の中で最も大きい数を出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。
条件
すべてのテストケースにおいて、以下の条件をみたします。

・1 ≦ n ≦ 50
・各 a_i(1 ≦ i ≦ n)について 1 ≦ a_i ≦ 50
入力例1
2
4
7
出力例1
7
入力例2
3
20
19
2
出力例2
20

解答

#1行目の入力値(数値)を変数に代入する
n = gets.to_i

#2行目以降の数値を配列として変数に代入する
numbers = readlines.map(&:to_i)

#配列の最大値を出力する
puts numbers.max

問題5 半角スペース区切りでの出力 (paizaランク D 相当)

整数 n が与えられるので、n 回、半角スペース区切りで paiza と出力してください。

入力される値
入力は以下のフォーマットで与えられます。

n

1行目に整数nが与えられます。
入力値最終行の末尾に改行が1つ入ります。

文字列は標準入力から渡されます。

期待する出力
paiza と n 回、半角スペース区切りで出力してください。最後の paiza の後には半角スペースは入れず、改行を入れ、余計な文字、空行を含んではいけません。

paiza paiza ... paiza
条件
すべてのテストケースにおいて、以下の条件をみたします。

・1 ≦ n ≦ 50

入力例1
2
出力例1
paiza paiza
入力例2
3
出力例2
paiza paiza paiza

解答 (入力例1で解説)

#1行目の入力値(数値)を変数に代入する
n = gets.to_i

#['paiza'] * n →["paiza", "paiza"] #↑にしてから.join(' ')で半角スペースを間に挟んで結合して出力する puts (['paiza'] * n).join(' ')

問題6 改行区切りでの出力 (paizaランク D 相当)

整数 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 行で与えられます。
入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。

期待する出力
a_1, …, a_n をそのままの順番で改行区切りで出力してください。

a_1
...
a_n

末尾に改行を入れ、余計な文字、空行を含んではいけません。

条件
すべてのテストケースにおいて、以下の条件をみたします。

・1 ≦ n ≦ 50
・各 a_i(1 ≦ i ≦ n)について、1 ≦ a_i ≦ 50

入力例1
2
1 5
出力例1
1
5
入力例2
3
4 30 12
出力例2
4
30
12

解答

#1行目の入力値(数値)を変数に代入する
n = gets.to_i

#2行目の半角スペース刻みの入力値を受け取り変数に代入する
numbers = gets.split.map(&:to_i)

#出力する
puts numbers