一緒に時代をつくる熱いエンジニアを募集!〜ECパッケージ構築プロジェクト支援
応募要件のとこの例題
http://www.green-japan.com/job/3808.html
自分の解法(Java)
public int getSumValue(int x) { String str = Integer.toString(x); char[] array = str.toCharArray(); int sum = 0; for(char c : array) { sum += Integer.parseInt(String.valueOf(c)); } return sum; }
charにすることばっか考えてたorz
残念なセンス。。。
public static int func(int value) { int total = 0; for(; value > 0; value /= 10) { total += (value % 10); }; return total; }
ついでに3桁の整数で処理時間も測ってみたら
前者 41150ns
後者 530ns
でした。
(追記1)
twitterで見かけた再帰を使ったかっこいい解法(Java)
int calculate(int n) { return (n > 9 ? this.calculate(n / 10) : 0) + (n % 10); }
同じく3桁の整数で処理時間を測ったら3650nsでした。
(追記2)
id:Dekosuke さんの解法(Python)
http://d.hatena.ne.jp/Dekosuke/20100107
(追記3)
@jacobi824さんの解法(PHP)
function calc($input){ return array_sum(str_split($input)); }