この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 件のコメント:
コメントを投稿