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

paizaCランクレベルアップ問題と解答(5) 数字の文字列操作(0埋め) Ruby

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

詳しくはコチラ

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

問題4 数字の文字列操作(0埋め) (paizaランク D 相当)

0 ~ 999 の整数 n が与えられます。 n が 3 桁の数である場合には n をそのまま出力し、 n が 2 桁の数である場合には n の先頭に 0 をひとつ、 1 桁の数である場合には n の先頭に 0 をふたつ加えたものを出力してください。

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

n

1 行目に整数 n が与えられます。

n

入力値最終行の末尾に改行が1つ入ります。

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

期待する出力
n を 3 桁で 0 埋めしたものを出力してください。
末尾に改行を入れ、余計な文字、空行を含んではいけません。
条件
すべてのテストケースにおいて、以下の条件をみたします。

・0 ≤ n ≤ 999
入力例1
7
出力例1
007
入力例2
123
出力例2
123

解答  文字列として受け取らないとうまくいきません

#1行目の入力値(文字列)を変数に代入する 
strings = gets.chomp

#1桁の時00を追加する
  if strings.size == 1
     puts "00#{strings}"

#2桁の時0を追加する
  elsif strings.size == 2
     puts "0#{strings}"

#その他はそのまま出力する
  else puts strings
end

問題5 数字の文字列操作(時刻1) (paizaランク D 相当)

時刻を表す長さ 5 の文字列 S が “XX:XX” の形式で与えられます。入力された時刻を時と分に分け、時、分の順番で改行区切りで出力してください。

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

S

1 行目に文字列 S が与えられます。

S

S は “XX:XX” という形をしており、 “:” の左側は時を、右側は分を表します。時や分が一桁である場合、十の位は 0 で埋められます。また、 00:00 から 23:59 までの 24 時間表記を採用しています。 

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

期待する出力
入力された時刻を時と分に分け、時、分の順番で改行区切りで出力してください(2行出力する)。その際、入力値の十の位が 0 である場合には一の位だけ出力してください。
末尾に改行を入れ、余計な文字、空行を含んではいけません。
条件
入力例1
12:34
出力例1
12
34
入力例2
01:03
出力例2
1
3

解答 (入力例1で解説)

#1行目の入力値を:(コロン)の部分で分割して変数に数値として代入する[12, 34]
strings = gets.split(':').map(&:to_i)

#出力する
puts strings

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

入力値01:03の場合
strings = gets.split(‘:’).map(&:to_i) で

stringsは[1,3]となる。これは数値に変換する時0は無視されるため
あとはputs stringsで出力する