夢追い人

"It takes a dreamer to make a dream come true."―Vincent Willem van Gogh

SRM144Div2-200点問題の日本語訳完成しました。

一応中間報告です。
訳してみたらこの前のとは比べ物にならないくらい簡単な問題でビビリました。
以下その訳文

問題文
コンピューターは日付や時間をある特定の日からの秒またはミリ秒単位の単一の数字で記録する傾向があります。この問題であなたがやるべき事は、int型のある午前0時からの秒単位の数字(seconds)を受け取って、String型の"H:M:S"という表し方にフォーマットして返すwhatTimeという関数を書くことです。ここでは、はその日の午前0時からの時単位の数字を表し、Mは時単位の最後の時間からの分単位の時間を表し、Sは分単位の最後の時間からの秒単位の時間を表します。どのH、MそしてSも整数であり、0秒を導くために一切余分な数字をださないようにしなければいけません。このように、もしsecondsが0ならば、あなたは"0:0:0"で返すべきだし、もしsecondsが3661ならば、あなたは"1:1:1"を返すべきです。
定義
クラス: Time
関数:  whatTime
パラメータint
返り値: String
関数の書き方:String whatTime(int seconds)
(もちろんあなたの関数はpublicでなければいけません。)  

パッと思いつくのは単純に割って引いていくアルゴリズム(?)ですが…
とりあえず書いてみましょうか。

class Time {
  public String whatTime(int seconds) {
    int hour = seconds / 3600;
    seconds -= 3600 * hour;
    int min = seconds / 60;
    int sec = seconds - min * 60;
    String time = String.format("%d:%d:%d", hour, min, sec);
    return time;
  }
}

ただ、0の処理が問題です。if文を使ってあらかじめ割らなくていいものは割らないようにするのと、今のままどっちが早いかという話。
さぁ、どうかなぁ??
検討しつつ550点問題(だった気がする。)の日本語訳も作成していきたいと思いますが…
テスト近いんですよね〜。
次回のSRMは出場無理確定(午前2時からって…)として、この過去問もやりきれるか不安が残ります。
それではこれから*1もこうしんするのでよろしくお願いします。

*1:メインブログ[http://grousefuji.blogspot.com/:title]

広告を非表示にする