2012年4月16日月曜日

TopCoder SRM375 Div2 250Pts

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

薬剤師が材料を混ぜ合わせた混合物を作成している。彼女は混合物の最終的な濃度を知る必要がある。濃度は混合物質の重さを体積で割ったものと定義される。文字列型のingredients[]という各要素が"体積 ml of 物質名, weighing 重量 g"という形式のものが与えられる。各要素は1つの物質についての表記である。それぞれ、体積はミリリットル、重量はgを単位にしている。ingredientsの要素に出てくる物質をすべて混ぜた物は1ミリリットルにつき、何グラムになるかを求めて返すメソッドを作成せよ。

私の解答はこちら。

public class MixtureDensity {

 public double getDensity(String[] ingredients) {
  int volume = 0;
  int mass = 0;
  for( int i=0 ; ilt;ingredients.length ; i++ ){
   String[] tmp = ingredients[i].split(" ");
   volume += Integer.parseInt(tmp[0]);
   mass += Integer.parseInt(tmp[tmp.length-2]);
  }
  return (double)mass/volume;
 }

}

得点は242.18/250、1回のsubmitでシステムテストクリア。当日の提出者の正解率は約88%。最初はtmp.length-2を5(スペース気切りで6番目に重量があると思っていた)としていたが、物質が2語以上のときに、文字列を整数にparseしようとするため、例外が発生するので修正した。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計