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