競プロ、ついに
私は元来ロボット畑の人間でしたので、高校時代は専ら組み込み側に回っていたわけですが、情報系学科に進んだ以上は、こういったweb系しかり一定のプログラミングスキルを身につける必要があります。わたしの身の回りの友人には、いわゆる「猛者」というべき強いコーダーさんたちがいます。そんな強い人たちが話題として持ってくるのが「AtCoder」、そう、いわゆるプログラミングコンテストです。このサイトを訪れるような方であれば十中八九ご存じでしょうが、与えられた問題を制限時間内に何問解けるかを競うものです。初心者が解けるような問題から、熟練者でも答えに窮するような問題までひとしきりあり、また一問単位でみても、実行時間制限やメモリの問題など、突き詰めれば果てがなく奥が深いのが魅力です。
難しそう
いかにも知っている風を装って上の文章を書きましたが、初手の感想はこんな感じです。「言語は何を使うといいんだ…?」「大会っていうとどうも尻込みがする…」といった感じで、どうも取り組む気になれず。アカウント登録を2022年5月に行ったはいいものの、なんと丸一年放置(!?)した結果、数々の課題やタスクに埋もれ、忘却の彼方へと過ぎ去っていってしまったのです。
転機
とはいったものの、AtCoderのメール通知はONにしたままだったので、大会情報が定期便のごとく毎週末受信されており、存在自体はずっと気にかかっていました。大学も学部2年生になり、専門性が増していく中で、ある人物と親しくなりました。私が冒頭「猛者」といった人のひとりですが、彼は別格にコーディング力が強く、プログラミングの授業においても、皆がヒーヒーいいながら苦戦している中ひとり涼しい顔で全問解き切るような、強靭な頭の回転を持つ人物です。(猛者君、見てたらごめんなさいね)そんな彼もコンテストに明るく、いろいろと話を聞いているうちに、コンテスト出たい欲が徐々に高まってきました。
はじめての大会登録
言語えらび
学部1年でCを本格的にかじり、他講義の聴講でPython、2年でJavaと、広く浅く知っている言語が多く、書くことに深く長けた言語はこれといってありません。なので、ひとまず直近で学習しているJavaを使って書いていくことにしました。
大会エントリー
5/20の大会にでたのでまあまあタイムリーな話題です。AtCoderのサイトに行き、久しぶりのアクセスだったのでIDとPassをうち、ABC302(しんどすぎて一生忘れんと思う)にエントリー。大会自体の参加登録は一瞬です。
いざ開始
第一問をみる
ざっと見、割り算の計算で終わりそうだったので、スーッとint
で書いていきます。そこで入力例をみて唖然ですよ。
制約
まじ?絶対あふれるじゃん…、で、どうすればいいのかと。ざっとJavaのリファレンスを読み込んでみると、long
型でも 、これ よか小さいよな、とか考えて(実際は事足りるんですがこのとき気づいてません、 は くらい)書いているうちに時間もなくなってくる。どうにかBigInteger
なるクラスを導入してACをひねり出したものの…
沈黙の第二問
自分のやる気が完全に消失したのが第二問ですね。二次元の文字列探索の問題です。そうなんですが、探索法に一生難儀した結果なんと制限時間の100分を終えてしまいました。1問目から苦戦してしまって焦ってしまったことも相まってか、後半はまったくアイデアが浮かばず。うーん、知識を吸収していくしかないとはいえ。マジか。プログラムの授業でももう少し量的にも時間的にも解けていたので、自分のコーディング力に自惚れているフシがありました。それにしても、まだまだ地力不足なことを実感した大会でした。
おまとめ(負け惜しみ)
うーーーーーん、意地になりました。学科のプログラム大会でいただいた賞品の本をひたすらに読み込んで、言語とともにアルゴリズムを勉強していきたいと思います。次回大会は来週かな?典型90問でもチマチマ解いて、c++も勉強していこうかな。では短いですが以上です。
Discussion
コメントはまだありません。
ログインするとコメントできます!