ド初心者が競技プログラミングコンテストのAtCoderに参加してみた

最近Qiitaをパラパラと眺めていると

どうやらAtCoderとかいう競技プログラミングが盛り上がってきてるらしい

と感じたので、だいぶ遅めではありますが食わず嫌いもよくないので超初心者ながら競技プログラミングコンテストに参加してみました。

結果から話すと意外と楽しめたので参加をちょっと躊躇ってる人の背中をおせたらいいかなと思います。

スポンサーリンク

AtCoderって何?

これは色んな人が詳しく説明してくれているので初心者の私が説明するものでもないですが、AtCoderとはオンラインの競技プログラミングコンテストです。

AtCoder
https://atcoder.jp/

競技プログラミングとは「問題を解決するコードをいかに素早く書けるかを競う競技」だそうです。つまりパズルみたいな問題を早くプログラムして解いたら勝ちみたいなイメージですね。

AI分野で紹介したデータ分析コンペのkaggleとは少し毛色が異なり、こちらは制限時間100分の中でどれだけ早く解答するかというリアルタイム性の高いコンペになります。

コンテストは大体毎週末に行われていて、成績に応じてランキングやレートがつけられているようですね。

時間に追われながらって中々ハードル高いな…

と思っていたのですが物は試しにとりあえず参加してみました。

コンテストに参加する前にやったこと

とはいえいきなりコンテストに突入するのは気が引けたので、公式ホームページ内の「AtCoder Beginner Selection」という初心者向けの問題集が用意されていたのでこれに取り組んでみました。

AtCoder Beginner Selection
https://atcoder.jp/home

問題は全部で10問なので気軽に取り組むことができます。

問題

左側の最後にA、B、Cと割り振られていますがこれが問題の難易度を表しているようです。Aが一番簡単で難易度が上がって行きます。本番のコンテストではD、E、F問題も出題されます。

問題自体はとてもシンプルなパズルです。例えばこれは私の勝手な思いつきですが、

10円玉がa枚、50円玉がb枚、100円玉がc枚あるときに500円の払い方は何通りですか?

入力例 a, b, c = 8, 20, 7

のような感じです。本当にこれくらいのレベルの問題もあります。なので安心してまずは取り組んでみてください。

この問題集の問題たちは答えは明快でどうやってプログラム書けばいいのかなと少し悩みながら解けるレベルだってので楽しく取り組むことができました。Qiitaとかを見るとB問題ができれば十分コンテストには参加できるレベルのようです。

使用言語はC++ではなくてPython

使用するプログラミング言語はたくさんの中から選べるようですが、公式ページやすごそうな人たちのコメントを見るとC++を使っているようです。しかし私はC++を書けないので知ってるPythonで参加しました。とっても気楽です。

いざコンテストに参加

そんなこんなのうちに土曜日の21時を迎えてしまいコンテストの時間となりました。オンラインで取り組めるので場所は自宅から参加です。

コンテストは100分で6問(A問題からF問題)を解答する形式でした。21時になると問題が表示されます。

結果としては

A、B問題は簡単でC問題は少し考えればできた。D問題は紙の上なら答えは出せそうだけどプログラミングできない。。。あとは知らん。

といった感じでした。まあこんなもんでしょうね。超フツーレベルです。センスある人たちなら全然もっと出来ると思います。

コンテストが終わるとランキングとレートがついた

コンテストが終わるとランキングとレートがつきました。今回参加して世界ランキング35000位くらいとなりました。

ランキング

終わった後に簡単な解説のPDFとYoutubeで解説がアップされるのでそこで問題の復讐ができるようになっています。

今回初めて競技プログラミングに参加してみて感じたのは思ってたより面白いんだなってことです。すごい人たちだけが戦ってるイメージでしたが初心者でも初心者なりに楽しめる部分もあってとってもいいなと思いました。

なによりkaggleと違って機械学習の専門知識は必要なくてプログラミングの基本文法さえ知っていれば取り組める点も大きな点だと思います。

プログラミング言語の文法を一つ勉強した!と言う方は競技プログラミングに挑戦してみるのもとってもおすすめです。思ってたより気楽だし意外と楽しめますよ〜

コメント