このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文について、おおまかに説明する。
簡単に言うと、0点から10000点の成績が入った配列scores[]が与えられたときに、最高点に100点、最低点の人に0点を与えるよう正規化し、その結果を返せというものである。なお、正規化の結果発生する小数点以下の値はいつでも切り捨てるものとする。
私の解答はこちら。
public class TestCurve { public int[] determineGrades(int[] scores) { int max = 0; for( int i=0 ; i<scores.length ; i++ ){ max = Math.max(scores[i], max); // CらしくなくJavaらしい、最大値を求めるループ } for( int i=0 ; i<scores.length ; i++ ){ scores[i] = (int)(scores[i]*100.0/max); } return scores; } }
得点は247.18/250。簡単でした。
0 件のコメント:
コメントを投稿