INDEX
■はじめに
Rubyの基礎的な問題をたくさん解くことで基本的な考え方やメソッドの使い方を定着させたい。
基本的にはAtCoderというプログラミングコンテスト(競技プログラミング)の過去問を使う。(AtCoderは難易度が分かれており、難易度の低いA問題かB問題を解いていく)
■問題
●出典
AtCoder Beginner Contest 023のA問題
https://atcoder.jp/contests/abc023/tasks/abc023_a
●問題文
今回は 23 回目の AtCoder Beginner Contest です。今回のコンテストは 5 月に開かれています。
高橋君は 23 という整数を見て、十の位と一の位に分割して足し合わせることによって、2+3=5 と現在の月と等しい数となることに気が付きました。
このことに興味を持った高橋君は、手元にあった 2 桁の正整数 X の各位の和を計算することにしました。
あなたの課題は、正整数 X の各位の和を求めることです。
●入力
入力は以下の形式で標準入力から与えられる。
X
- 1 行目には、2 桁の正整数 X(10≦X≦99) が与えられる。
●出力
正整数 X の各位の和を 1 行に出力せよ。出力の末尾にも改行を入れること。
■回答
●愚直に書く
入力された2桁の数字をto_s
して1文字目と2文字目として取り出して、to_i
して足せば良さそう。
x = gets.to_s
puts x[0].to_i + x[1].to_i
通った!
●リファクタリング/別アプローチ
to_s
してto_i
という回り道をしない方法がないかなと思って、2桁の整数の1桁目と2桁目をそれぞれ要素とする配列にしたりできないかなと思って調べていたらdigits
というメソッドが使えそうだった。
x = gets.to_i.digits
puts x[1] + x[0]
通った!
●他の方の回答例
x = gets.to_i
puts x / 10 + x % 10
x / 10
は2桁目の数字でx % 10
は1桁目の数字になる。なるほど!
●出てきたメソッド等
公式リファレンスを見る訓練。
■振り返りなど
digits
を使った別解ができて良かった。- 他の回答も勉強になった。