春告げ鳥

興味のあることをごちゃ混ぜで書いているので、.カテゴリー別に閲覧することをオススメします

NYC2015 - A問題

塾とAtCoderの定期開催の時間が絶妙に被っていてなかなか参加できなかったのですが、年末年始は塾がお休みだったのでNew Year Contestというのに参加しました。

AtCoderは順位表がリアルタイムで変わるので、競技している感が出ていいのですが、
早い人はA問題1分程度で解いていて、自分は30分ぐらいかかってしまうのでA問題ぐらいはなんとかしたいなぁと復習を書くことにしました。

A 2015

問題概要

2015というタイトルの問題です。いや~去年はいろいろありましたね。
この問題は、与えられた数字を二進数に変換してその数字列が回文*1であるかどうかを調べなさいという問題です。

考察

後で強そうな人のソースコードを見てみた限り、二進数に変換せずに回文かどうか判定する方法はなさそうなので

1.二進数に変換する
2.回文かどうかチェックする

というまあやるだけみたいな問題ですね。
(やるだけに30分もかかってしまってつらい

実際に書いたコード

後の考察

進数変換とかまともに勉強したことないので他の人を参考にしながら書いてみました。 これが自分の中で一番気持ちいいコードです。
ビット演算とか使ったことないので新年記念に

前のコードだと、どこからどこまでループを回すかというところを考えながらやる必要があったのでそれだけで時間が取られてしまうのですが、後のコードはループを出来るだけ使わずに関数に任せているのでその分デバッグがしやすいという利点があります。

普段からプログラムを書いていてもいかに早く書き上げられるかというのはあまり意識しないので、そういった意味で競技プログラミングはいい勉強になります。

*1:左から呼んでも右から呼んでも同じ文字列