2011年12月21日水曜日

TopCoder SRM288 Div2 250Pts

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

TopBankという金融機関で働いており、初期口座収支と1日の取引一覧にそって、その日の最後の収支を返すというモジュールを書く仕事を割り当てられた。各取引は口座に入金するcreditと、口座からお金を引き出すdebitのどちらかからなる。もしdebitがある時間に利用できるお金を超えていたら、収支バランスはマイナスになる。初期の口座のバランスを表すstartingBalanceとtransactions[]という1日の取引履歴が与えられる。取引を表す文字列は"type amount"という形式であらわされる。creditは"C"、debitは"D"という文字でtypeを表す。取引高は1から100000の整数値であり。0は数値の先頭にはつかない。作成するメソッドが返すものはすべての取引を処理した後のバランスとなる整数値である。

例えばstartingBalence=100で、transactions[]={"C 10","D 5","D 20"}とすると、返す値は100+10-5-20=85となる。

私の解答はこちら。

public class AccountBalance {

 public int processTransactions(int startingBalance, String[] transactions) {
  int ret = startingBalance;
  for( int i=0 ; i<transactions.length ; i++ ){
   String[] tr = transactions[i].split(" ");
   int money = Integer.parseInt(tr[1]);
   if( tr[0].equals("C") ){
    ret += money;
   }else{
    ret -= money;
   }
  }
  return ret;
 }

}

得点は246.92/250、中央値は約238点。1発で通しました。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計