読者です 読者をやめる 読者になる 読者になる

一緒に時代をつくる熱いエンジニアを募集!〜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
残念なセンス。。。


id:t_yano さんの解法(Java)

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));
}