2012年3月28日水曜日

TopCoder SRM354 Div2 250Pts

このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題についておおまかに説明する。

Thimblesは以下のルールに従ったゲームである。ディーラーは3つの指ぬきをテーブルにおき、1番の指ぬきの下に小さなボールをいれる。つぎに2つの指ぬきの位置を交換することを繰り返す。最後にディーラーはどこにボールがあるかを尋ね、正しい指ぬきを選べば勝ち、そうでなければ負けとなるというものである。これをコンピュータで実装しようとしている。この問題では、あなたは指ぬきの位置交換が終わった時に、ボールがどこにあるかを返すモジュールを作成することになる。swaps[]という交換の順番を示した文字列型配列が与えられる。各要素は"X-Y"という形式で与えられ、XとYの位置にある指ぬきを交換したという意味になる。位置は1、2、3のいずれかである。swaps[]の交換がすべておわったとき、ボールが最後にどの位置にあるかを返すメソッドを作成せよ。

私の解答はこちら。

public class Thimbles {

 public int thimbleWithBall(String[] swaps) {
  int pos = 1;
  for( int i=0 ; i<swaps.length ; i++ ){
   String[] ns = swaps[i].split("-");
   int p1 = Integer.parseInt(ns[0]);
   int p2 = Integer.parseInt(ns[1]);
   if( p1 == pos ){
    pos = p2;
   }else if( p2 == pos ){
    pos = p1;
   }
  }
  return pos;
 }

}

得点は245.83/250、中央値は約223点。1回のsubmitでシステムテストクリア。上の書き方なら1~3に限定されないので、既に簡単な拡張ができてますね。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計