2011年5月30日月曜日

TopCoder SRM181 Div2 250Pts

そろそろ500Ptsの問題にも挑戦したいが、その準備のための勉強も必要なので、とりあえず一番簡単な問題を解いてコードを晒してみる。

本日の問題はこちら(要TopCoder登録 & 問題文は英語)。

問題を大まかに和訳してみる。
2次元横スクロールゲームで、ボスと戦う。ボスは様々な高さに銃を撃ち込むことができる。kilomanは飛ぶことと、立ったままでいることの2種類の行動をとることができる。kilomanが立ったままで、ボスが1-2に銃を撃った場合はヒットとなり、kilomanがジャンプして、ボスが3-7に撃った場合もヒットになる。ボスの攻撃パターンpattern[]と、立ったままか飛んだかを表す文字列jumpsが与えられたときに、何回kilomanはボスの攻撃にヒットしたかを返すメソッドhitsTakenを作成せよ。クラス名はKiloManとする。

私の作成した解答は以下のとおりである。

public class KiloMan {

 public int hitsTaken(int[] pattern, String jumps) {
  int nHits = 0;
  for( int i=0 ; i<pattern.length ; i++){
   if( jumps.charAt(i)=='S' && pattern[i]<=2 ){
    nHits++;
   }else if( jumps.charAt(i)=='J' && pattern[i]>=3){
    nHits++;
   }
  }
  return nHits;
 }

}

得点は226.33/250。毎度ながら文字列の比較ではまってしまう。equalsメソッドを使うと思っていたら、単純な比較で済んでしまうというオチ。charはプリミティブな型だから、equalsではなく、単純比較でよいということなのね。

0 件のコメント:

コメントを投稿

フォロワー

ページビューの合計