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