私がAtCoder(競プロ)を始めた理由と続けるメリットについて

AtCoder
この記事は約5分で読めます。

こんにちは,おーよしです.

最近AtCoderに目覚めて,毎日過去問解いたり,解法をブログにアップしたりしてます.

【ABC174 A~D問題】等比数列の和を有効に使う【Python】
本記事についてAtCoder Beginner Contest 第74回のA~D問題を,Python3で解いてみた.特にC問題は「等比数列の和」,D問題は「ひらめき(笑)」を使えば解けるらしいので,それを使って解いてみた....続きはコチラ
【ABC167 C問題】bit全探索のやり方とサンプルコード【python3】
概要競技プログラミングである「AtCoder Biginner Contest」の第167回C問題.「Skill Up」 (引用:を解いてみた.この問題では,組み合わせを全通り探索しなくてはいけなかったので...続きはコチラ


とは言っても,本当に始めたのはここ半年くらいで,それまでは競技プログラミングという存在すら知りませんでした...情報系専攻してるのに.

AtCoderの存在を知っていざ始めてみて,第一声は「自分ってこんなことも書けないのか...」と.

問題内容はさほど難しそうな印象はなかったのですが,いざコーディングしてみるとまあ引っかかる引っかかる,時間切れ(TLE)
如何に自分がこれまで計算量というものを考えて来なかったことを痛感しました.

あとはアルゴリズム.講義とかで色々学んできたんですが,実際コーディングをしたことはあまりなかったし,なんせほとんど忘れてしまってました.

bit全探索?,ヒープ探索?,どんなやつだっけ??

これまでずっと情報系専攻してたのに,こんなことも分からないなんて,今まで何やってきたんだと思ったわけです.

という経緯もあり,まだ半年くらいですがAtCoderをほぼ毎日取り組んでいます.

長々と書きましたが,本記事の主旨はAtCoderを「始めた理由」と「続けるメリット」についてです.

これまでAtCoderの存在を知らなかった人,興味がなかった人に是非読んでもらいたいです.

AtCoderを始めた理由

理由1: 周りに触発されたから

え,競プロやってないの?

大学3年の頃,友人に言われました.
この時は内心「「競プロ?何それ?」」と思いつつ,「すまん,やってないわ」と返答してました.

その時はあまり深く考えていなかったのですが,ここ最近になって周りの人が続々と競プロの話をしだして,「あ,これは自分もやらないと」という使命感に駆られました.

理由2: LINEのコーディングテストに落ちたから

Web開発系の仕事をしたかったので,まずはLINEを受けてみようと.

1次選考がESコーディングテストということで,そのコーディングテストを受けてみました.

問題をみた瞬間,「問題文ながっ!!」ってなりました笑
それでも何とか解読しつつコーディングしましたが,結果間に合いませんでした.

自分としては「このコードでいけるやろ!」と思ってビルドしてみたら,半分くらい不正解という結果が返ってきて,手詰まり状態.

如何に自分のコーディング力が弱いかを痛感しました.
他の企業でもコーディングテストがあったのですが,いずれも惨敗.悔しかった.

この経験があって,「次は絶対解いてやる!」という自分の負けず嫌いな精神が働き,今後も練習しようと思ったわけです.

AtCoderを続けるメリット

メリット1: コーディング力が上がる

私はコーディング力というのは,「プログラムを設計する速さ」と「それを実装する速さ」だと考えています.

ある問題が与えられた時,「この問題ならこのアルゴリズムでいけるな」とか,「この問題はこれだとタイムアウトするから別の方法考えないとな」とか.
AtCoderで何度か練習すると,このプログラムを瞬時に設計する力を養うことができます.

またAtCoderは時間制限があるので,一つの問題に何時間もかけられません.設計したプログラムを元にできるだけ早く実装する必要があります.

最近だとプログラミングのオンライン学習コースとか受講している人が多いですが,正直それだけだと実戦ではまだ足りないと思ってます(批判ではないので,あしからず).
与えられた課題(アプリ作ってみよう,サーバ構築してみよう等)があって,その通りに実装するだけなら,正直調べればいくらでもサンプルコードが出てくるのでコピペすれば解決します.極端ですが..

大事なのは,プログラムの「設計」や「効率」という部分.
自分で考え,自分で書けるようになって,初めて一人前と言えます

最初は難しいですが,慣れてくると自分の実装力が上がっているのが実感できるので,すごく楽しくなってきます.

メリット2: 他人のコードを読む機会が増える

AtCoderでは過去に出題された問題を全て解くことができます.

また問題の難易度はAtCoder Problems(https://kenkoooo.com/atcoder/#/table/)に表記してあります.

私は今,難易度が灰 -> 茶 -> 緑 ->水 の問題を順に解いています.練習していく中でどうしても解けない問題は,他の人の解答を見ることができます

解けなかった問題には,「他の人はどうやって解いてるんだろう」とか,また解けた問題でも「他の人はもっと効率の良い書き方してないかな」とか.

いずれにせよ,他のひとが書いてるコードって一人で勉強しているとあまり見る機会がないので,良いことだと思います.

逆に,自分のコードが見られる可能性もあるので,変な関数名や変数名にはしないようにしましょう.まあよっぽどですが.笑.


メリット3: 就職,転職に役に立つ

最近のWeb系企業だと,ほとんどと言っていいほど「コーディングテスト」が選考に含まれます.新卒もそうですが,企業によっては転職の際にも選考に含まれるらしいです.

これからWeb系の企業に就職・転職を考えている方は,AtCoderやっといた方がいいです.

また私の過去の経験ですが,面接で「AtCoderやってるの?今何色?」と聞かれたことがあります.その時はほんとに始めたばっかりだったので,「始めたばっかりでまだ灰何ですよね.でも水色にまずは慣れるように今頑張ってます」と答えました.向上心があると捉えられたのか,結構反応はよかったと思います.

さいごに

正直,何で今までやらなかったんだろうと後悔してます.

エンジニアとして働いていくなら,やっぱりコーディング力を上げていくのは大切だと思うんですよね.その能力を高める方法として,AtCoderは自分の中では最適解だと思ってます.

参考書やオンライン学習で満足するのではなく,実戦で通用する力を身につけていくことが,今後のことを考えても大事なので,私も日々精進していきます.

コメント

タイトルとURLをコピーしました