このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文について説明する。
2007年の1月にお菓子屋さんが飴を製造した。毎月の最後の日に、お母さんは子供にいくつか飴を食べることを許している。飴の寿命は1/1から飴が食べられるまでの日数である。例えば、1/31に食べられた飴の寿命は31日、12/31に食べられた飴の寿命は365日である(うるう年でないことに注意!)。eatenCandies[]という2007年の各月の最後に食べられた飴の数が与えられたとき(配列の添字0は1月、添字1は2月を表す。以下同様)、飴の平均寿命を計算して返すメソッドを作成せよ。
私の解答はこちら。
public class AverageCandyLifetime { public double getAverage(int[] eatenCandies) { int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 各月の日数 int sum = 0; int lifetimes = 0; int nCandies = 0; for( int i=0 ; i<eatenCandies.length ; i++ ){ lifetimes += days[i]; nCandies += eatenCandies[i]; sum += eatenCandies[i] * lifetimes; } return (double)sum/nCandies; } }
得点は244.91/250、1回のsubmitでシステムテストクリア。中央値は約215点。
0 件のコメント:
コメントを投稿