問題説明
自然数Nを受け取って、Nの各桁の足し算を行いreturnするsolutionメソッドを作成してください。
例)N=123の場合、1 + 2 + 3 = 6をreturn。
条件
- Nの範囲:100,000,000以下の自然数
入出力の例
| N | answer |
|---|---|
| 123 | 6 |
| 987 | 24 |
解説
※解説は私が作成したコードなので、もっといいアルゴリズム等々ありましたら、共有してください!
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を利用したロジックも教えていただきましたので、共有します。
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のほうがもっと使われますが、コーディングテストではどうでしょう?
