2012年4月7日土曜日

TopCoder SRM363 Div2 250Pts

このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題についてごく簡単に説明する。テストケースには画像があるので、本文も参照されたい。

問題は自分の背中にあるアナログ時計(短針・長針のみからなる)を目の前にある鏡を通してみた時刻は実際には何時何分かを求めるメソッドをかけというもの。時計に数字は振られておらず、5分刻みの位置に点が打ってあるだけのものとなっている。例えば鏡を通して10時であれば、実際には2時である。

私の解答はこちら。

public class MirroredClock {

 public String whatTimeIsIt(String time) {
  String[] hhmm = time.split(":");
  int h = Integer.parseInt(hhmm[0]);
  int m = Integer.parseInt(hhmm[1]); // timeの形式から時間・分を計算
  if( m == 0 ){ // 分の値によって場合分けが発生する
   int trueHour = 12 - h ;
   return String.format("%02d:%02d", trueHour%12 , m);
  }else{
   int trueMinute = 60 - m;
   int trueHour = 11 - h;
   return String.format("%02d:%02d", trueHour%12 , trueMinute);
  }
 }

}

得点は227.94/250、中央値は約150点。1回のsubmitでシステムテストクリア。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計