今日のTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。それでは、問題について説明する。
商品のコストと売値が与えられたときのマージンについて考える。例えば、$100で$80のコストの商品を売れば、マージンは20%である。今、items[]という売値とコストが文字列になった文字列配列が与えられたときに、全体のマージンはいくつになるかを計算して返すメソッドを作成せよ。ただし、マージンは小数点以下は切り捨てる。また、items[]の一つの文字列は長さが13で、"222.22 111.11"のように、小数点以下は2桁、百の位まである数字が並べられている。左側の数字が売値で、右側の数字がコストを表している。
私の解答は以下の通り。
public class ProfitCalculator { public int percent(String[] items) { double sold = 0.0; double cost = 0.0; for( int i=0 ; i<items.length ; i++ ){ String[] sPrice = items[i].split(" "); sold += Double.parseDouble(sPrice[0]); cost += Double.parseDouble(sPrice[1]); } return (int)((sold-cost)/sold*100); } }
得点は244.21/250、解答者の中央値は218.5点。言われた通りの実装なので、単純かと思います。Javaであれば、一つの文字列は13文字という条件はあっても関係なかったですね。
0 件のコメント:
コメントを投稿