※スキルチェック問題ではありません。
規約により公式の解答コードそのままはよろしくないので、
オリジナルのコードにしています。
詳しくはコチラ
なるべくわかりやすい解説を付けました。
FINAL問題【特定の文字で区切り 1 行で出力】大きな数値を 3 けたごとにカンマ区切りで出力 2 (paizaランク C 相当)
大きな数値Nが入力されます。 位の小さい方から 3 けたごとにカンマ区切りで出力してください。
ただし、Nのけた数は 3 の倍数とは限りません。
- 入力される値
- 
N 入力値最終行の末尾に改行が1つ入ります。 文字列は標準入力から渡されます。 
- 期待する出力
- 答えの数値を出力してください。
M 末尾に改行を入れ、余計な文字、空行を含んではいけません。 
- 条件
- すべてのテストケースにおいて、以下の条件をみたします。
* Nは自然数 
 * Nは 0 以上 10 ^ 1,000 以下
- 入力例1
- 
123456789 
- 出力例1
- 
123,456,789 
- 入力例2
- 
813 
- 出力例2
- 
813 
- 入力例3
- 
12345678901234567890 
- 出力例3
- 
12,345,678,901,234,567,890 
解答 (入力例3で解説)
#↓入力値を文字列として受け取りバラバラにして反転する(gets.chars.reverse)
#["0", "9", "8", "7", "6", "5", "4", "3", "2", "1", "0", "9", "8", "7", "6", "5", "4", "3", "2", "1"]
numbers = gets.chars.reverse
#配列の長さの回数分繰り返す(20回) 
numbers.size.times do |i|
#3の倍数かつループの最後以外の時 
  if (i + 1) % 3 == 0 && i + 1 != numbers.size
#,(カンマ)を挿入する 
    numbers[i] << ','
  end
end
#繋げて反転して出力する
puts numbers.join.reverse
