アルゴリズム – 桁の足し算

問題説明

自然数Nを受け取って、Nの各桁の足し算を行いreturnするsolutionメソッドを作成してください。
例)N=123の場合、1 + 2 + 3 = 6をreturn。

条件

  • Nの範囲:100,000,000以下の自然数

入出力の例

Nanswer
1236
98724

解説

※解説は私が作成したコードなので、もっといいアルゴリズム等々ありましたら、共有してください!

public class Solution {
    public int solution(int n) {
        // 合計を保存用
        int sum = 0;
        while(n > 0) {
            sum += n % 10; // 10で割り算して余りを足していく。
            n /= 10;  // 10で割り算した結果を次の計算に使うためnに代入。
        }

        return sum;
    }
}
Streamを利用してやってみよう

QiitaでStreamを利用したロジックも教えていただきましたので、共有します。

@yuichiro76

Stream使えそうだったのでやってみました。
Stringに変換してcharで取り出してintに変換して合計を算出しています。Solution.java

public class Solution {
    public int solution(int n) {
        return Integer.toString(n).chars().map(Character::getNumericValue).sum();
    }
}

終わりに

アルゴリズムをやっていくと、速度や最適なデータタイプを利用しようと思っていますが、

さすがにStreamを利用すると見やすいし、短くなって可読性も高くなる気がします。

実際業務ではStreamのほうがもっと使われますが、コーディングテストではどうでしょう?

コメントを残す