このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文について、おおまかに説明する。
これまでの授業でもらった成績がmarks[]という整数型の配列で与えられる。成績はすべて0から10で与えられている。以降の宿題ではすべて10をもらうものとして、少なくとも最終成績で10を受け取るためには最低でもいくつの課題が必要になるか求めよ。平均成績が9.5以上であれば、10の成績を受けられるものとする。
私の解答はこちら。
public class AimToTen {
public int need(int[] marks) {
double total = 0.0;
for( int i=0 ; i<marks.length ; i++ ){
total += marks[i]; // totalはこれまでの課題の合計点
}
int nAssign = 0;
while( true ){
if( total / (marks.length + nAssign) >= 9.5 ) break; // 平均点計算
total += 10; // 毎回課題は10点
nAssign++;
}
return nAssign;
}
}得点は240.66/250。ちょっときれいに書こうとして時間を食ってしまいました。

0 件のコメント:
コメントを投稿