今日の問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。
問題について軽く説明する。賭け事について考える。
ある賭け事で、賭ける側は予測される結果「0からamounts.length-1までの整数」に対し、それぞれamounts[]ドルを賭ける。最終的な当たりがfinalResultになったとすると、finalResult以外に賭けたお金は運営者の収益になる。一方、当たりに対しては、運営者が1ドルにつきcentePerDollar[]セント払うように設定してある。この賭けが終わった後に、運営者が儲けるのは何セントになるか求めるメソッドを作成せよ。
この問題を読んだときに、トトが真っ先に思い浮かんだ、私の最初の解答はこちら。
public class BettingMoney { public int moneyMade(int[] amounts, int[] centsPerDollar, int finalResult) { int comp = 0; // 運営の収益 int people = 0; // 賭けた人が当たりにした額 for( int i=0 ; i<amounts.length ; i++ ){ if( i != finalResult ){ comp += amounts[i]; }else{ people += amounts[i]; } } return comp*100-people*centsPerDollar[finalResult]; } }
得点は226.20/250。正解率は約97%!変数名を運営会社と賭ける人々という意味にしたけど、あまり良い変数名ではないですね。また、peopleは次のように変形すれば不要ということに気付きました。
public class BettingMoney { public int moneyMade(int[] amounts, int[] centsPerDollar, int finalResult) { int comp = 0; for( int i=0 ; i<amounts.length ; i++ ){ if( i != finalResult ){ comp += amounts[i]; } return comp*100-amounts[finalResult]*centsPerDollar[finalResult]; } }
0 件のコメント:
コメントを投稿