こんばんは,ゴドーです。
昨夜,初めて「AtCoder」のプログラミングコンテストに参加してみました。
友人がよく参加しており,オススメされたのでやってみたわけです。
「AtCoder」はオンラインで参加できる競技プログラミングのサイトで,様々なレベルのコンテストが行われているようです。
自分が昨夜参加したのは初心者向けの「AtCoder Beginner Contest」というやつでした。
4つの問題に対してそれぞれソースコードを書いて提出すると,いくつかのテストケースについてそれぞれ入力データが与えられ,プログラムが出した答えが正しいものかどうかのチェックが行われます。
当然,様々な入力に対して正しい答えを出すことは必須ですが,それに加えて計算時間も上限値以内に納まることが求められます。
この計算時間を考えるというところが,非職業的プログラマーである自分にとっては新鮮でしたね。
僕が日常的にプログラミングをするなかで,これまであまり計算量を意識するような場面がありませんでした。
この点,システムを設計する方々は,当然ながら計算スピードも意識して実装しているでしょう。
よりよい探索アルゴリズムの知識や,データサイズに対する計算量オーダーに対する意識が,ずっと高いレベルにあることは間違いありません。
僕は主に数値実験のためにプログラムを書いています。
幸いにも(?),「軽い」モデルを扱うことが多く,計算量をそこまで意識しなくとも仕事が回っていました。
それでも,計算量を意識することは必要だなと,今回改めて思った次第。
計算時間を抑えることは,たとえ製品となるシステムでなくとも,自分の作業効率を高めるために大切です。
それに,大規模データの利用など,将来的な展望を考えたら,計算量がどの程度のオーダーにあるのか把握しておくことは間違いなく必要でした。
この辺り,これから反省して取り組もうと思います。
アルゴリズムの勉強もしたいと思いますし,実践する上で競技プログラミングは格好の場だと思うので,今後もチャレンジしていきたいですね。
なにより,単純にプログラミングすることは楽しいですから。
それでは,また。
/ゴドー