##はじめに
AtCoderのB問題 Digit SumsをRubyで解いてみました。
問題の確認は下記からお願いします。
他のやり方などご教授いただけると幸いです。
それではよろしくお願いします。
##B - Digit Sums
まずは入力の受け取りです。
今回は数値を一つだけ受け取ればいいので下記のように記述するだけで十分です。
n = gets.to_i
この数字を桁ごとに分解して、それらを足し算する必要があります。
このとき私は、まず文字列に変換して、charsメソッドで一文字ずつに分けて、再度数値に戻して。。。と考えていましたが、とても便利なメソッド、digitsメソッドを見つけましたのでこちらを活用したいと思います。
使い方は下記の記事にまとめておきました。
簡単にいうと数値を桁ごとに分けて配列で返してくれます。
さらにその配列の要素をsumメソッドで足して、変数に入れておきます。
n = gets.to_i
n_sum = n.digits.sum
上記の記述で問題の↓の部分はクリアです。
整数 nに対して,nを十進法で表したときの各桁の和を S(n)で表すことにします. たとえばS(101) = 1 + 0 + 1 = 2です。
あとはこのn_sumでnが割り切れるかどうかをif文の条件式で分岐させて、trueならYes、falseならNoを出力させます。
n = gets.to_i
n_sum = n.digits.sum
if n % n_sum == 0
puts "Yes"
else
puts "No"
end
##終わりに
digitsメソッドの収穫は大きかったです。
他にも便利なメソッドや解法があれば教えていただければ幸いです。