このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。この問題には画像がついてくるので、解く場合には目を通しておくと良い。では、問題文について説明する。
"Petals Around the Rose"(ばらの周りの花びら)はかなりよく知られた論理ゲームである。ゲームを知っている人が5つのダイスを振り、数字を言う。相手はその数字を得たルールを推測する。このゲームはトリッキーなものであるから、私たちはあなたたちにこのゲームを頼むわけではない。ルールは単に「ばらの周りの花びら」のように、各ダイスの中心にあるドットの周囲にあるドットの総和を求めるというものである。つまり、1、2、4、6の目は花びらは0であり、3の目には2つ、5の目には4つの花びらがあると言える。dice[]という、5つのダイスの目の値が書かれた配列が与えられたとき、上記の設定のよって求められる花びらの数を返せ。
私の解答はこちら。
public class RosePetals { public int getScore(int[] dice) { int[] petals = {0, 0, 2, 0, 4, 0}; // 花びらの数を入れた配列 int nPetal = 0; for( int i=0 ; i<dice.length ; i++ ){ nPetal += petals[dice[i]-1]; } return nPetal; } }
得点は246.19/250、中央値は約243点。1発で通過。特に悩む点はない。
0 件のコメント:
コメントを投稿