2011年8月9日火曜日

TopCoder SRM212 Div2 250Pts

今日のTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。それでは、問題について説明する。

問題は5つのサイコロを使うYahtzee(ヤッツイー)というゲームの最初の点数計算についての課題である。サイコロを転がして、値を選び、その値が出たサイコロはアクティブになる。点数はアクティブなサイコロの目の値で決まる。例えばサイコロの目が2,2,3,5,4と出た場合、2をアクティブにすると2+2=4点、5をアクティブにすると5点となる。

サイコロを振った時に上に出た値の入った配列toss[]が与えられたときに、それらから得られるスコアの最大値を返すメソッドを作成せよ。なお、サイコロは5つで、サイコロの目の値は1から6の整数であるものとする。

私の解答は以下の通り。

public class YahtzeeScore {
 public int maxPoints(int[] toss) {
  int max = -1;
  for( int i=1 ; i<=6 ; i++ ){
   int tmp = 0;
   for( int j=0 ; j<toss.length ; j++ ){
    if( toss[j] == i ) tmp++;
   }
   if( tmp*i > max ) max = tmp*i;
  }
  return max;
 }
}

得点は247.01/250、中央値は232.5点。SRM212以前にも出題されている過去問のようです。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計