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

paizaLvアップ問題と解答(標準出力22)Ruby

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

詳しくはコチラ

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

問題1 2 つの文字列を出力 (paizaランク D 相当)

文字列 S, T が与えられます。S + T = ST という形式で文字列を出力してください。

入力される値
S
T

入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。

期待する出力
答えの文字列を出力してください。

S + T = ST

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

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

* S, T の長さは 1 以上 100 以下
* S, T の各文字はアルファベット大文字または小文字である

入力例1
kirishima
kyoko
出力例1
kirishima + kyoko = kirishimakyoko
入力例2
S
T
出力例2
S + T = ST

解答

#2行の入力値を受け取る
a, b = readlines.map(&:chomp)
#問題文のようになるように記述する(半角スペースの数に注意する)
puts a + " + " + b + " = " + a + b

問題2 文字列と N 個の整数の出力 (paizaランク C 相当)

自然数 N, A, B が与えられます。(A, B) という形式の文字列を N 回、カンマと半角スペース区切りで出力してください。

入力される値
 

N A B

入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。

期待する出力
答えの文字列を出力してください。

(A_1, B_1), (A_2, B_2), ... , (A_N, B_N)

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

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

* N は 1 以上 100 以下
* A, Bは 10 以上 99 以下

入力例1
3 10 99
出力例1
(10, 99), (10, 99), (10, 99)
入力例2
2 33 44
出力例2
(33, 44), (33, 44)

解答

#1行目の入力値を文字列として受け取る
n,a,b = gets.split

#問題文のようになるように記述する(半角スペースの数に注意する)
puts (["(" + a + ", " + b + ")"] * n.to_i).join(',')

※ポイント (入力例1で解説)

 (["(" + a + ", " + b + ")"])

↑の部分を出力すると["(10, 99)"]

* n.to_i).join(',')

↑の部分で

①nを文字列から数値に変換して

②n倍する(入力例1の場合3)

③.join(‘,’)でカンマを繋げた時に付加することで末尾にカンマを付けさせないようにする。