はじめに
2021年に細々始めた競プロに2024年で本格的にのめり込み、2024年11月に目標としていたAtcoder茶色、Paiza Sランクに到達したため、その軌跡を書きたいと思います。本記事はあくまで備忘録で、勉強のノウハウやインサイトを提供するものではありません(採用関連の取り組みはnoteで発信しています)。
自己紹介
ロボットベンチャーで採用担当をしています(2024年12月時点)。プログラミング経験でいうと、2021年にG's Academyというプログラミングスクールへ通い、Laravelで簡単なWebアプリを作りました。その後、プログラミングスクールの同期が起業した会社で2023年頃モバイルアプリの開発におけるバックエンド・API開発を半年手伝っていました。
競プロを始めたきっかけ
2020年頃、日本就業を希望する外国籍の理系学生・エンジニアと国内IT企業・メーカーをマッチングするグローバルHRベンチャーに在籍していました。コロナ禍でグローバル採用が停滞していたこともあり、海外に在住するIT学生・第2新卒エンジニア向けのコーディングコンテストを開催することになりました。某コーディングテストのプラットフォームを提供する会社さんのツールを利用させていただき、約3000名の方にコンテストへ参加いただきました。
当時はアルゴリズムや競技プログラミングの知見も全くなく、ライブラリ内の初級・中級・上級のアルゴリズム問題からおすすめされる問題を選択するくらいしかできませんでした。当時思ったこととして、海外出身のエンジニアと企業様のマッチングの仕事をする中で、自身の介在価値が低く、何かせねばという強い思いにかられたことです。結果、その3ヶ月後にプログラミングスクールへ入学、半年後に競技プログラミングの勉強をスタートすることになりました。
プログラミングスクールの先生からはPaizaの紹介があり、データ処理の復習としてPaizaの問題を取り組むことになりました。その後、エンジニアを本気で目指すプログラミングスクールの同期からAtcoderという競技プログラミングのプラットフォームがあるという話を聞き、2021年11月にAtcoderのABC(Atcoder Beginner Contest)を受けてみることになりました。1問完で、B以降の問題は全く歯が立たず終了。悔しさと高揚感を感じ、競プロを趣味として続けていこうと思いました。
競プロに真面目に向き合うきっかけ
2024年に本気で競プロに取り組む前、2度競プロ熱が盛り上がる波がありました。
<第1波>
2022年7年にはドローンアプリケーションを開発するベンチャーに転職し、本格的にITエンジニア採用に向き合うこととなりました。その年の11月にエンジニア採用でPaizaを導入することになり、採用担当側として競プロという仕組みの恩恵を受けることになりました。Paiza経由の候補者の対応する中で、競プロ熱が戻ってきました。2021年は体系的にアルゴリズムを勉強してこなかったため、今回は本を買って勉強に取り組むこととしました。
エンジニア採用活動の傍、グラフの考え方や幅・深さ優先探索を学び、Paiza B問題は数問解けるようになりました。一方で、実力は低く、ABCを受けてもAtcoderのB問題が解けたり解けないレベルでした。そんな中、新しい会社に移ることとなり、エンジニアと早期に良い関係を作るため、恥ずかしながら「趣味は競プロ」と自己紹介。社内には競プロの猛者が数名いたため、競プロという共通の話題を通じて仲良くなることができました。
<第2波>
次に競プロ熱が盛り上がったのは、PG Battle 2023です。きっかけとして、2023年夏の会社の飲み会で競プロ好きのエンジニア2名と絡む機会があり、競プロの話で盛り上がりました。その1ヶ月後にPG Battleの告知があり、PB Battle 2023に初級レベル「ましゅまろ」でチーム戦デビュー。数週間前に競プロの本で勉強した分を復習し、当日参戦。3問正答のつもりで提出。3問目は正答できたつもりでしたが、Pythonの型変換の破壊的変更にひっかかり、残念ながら2問完。
他のメンバーが善戦してくれたこともあり、x0番目の特別賞で肉カタログ1万円分の棚ぼたGET。1万円分のサーロインステーキを味わいました。
サーロインステーキという思わぬインセンティブもあり、来年のPB Battleに向けて競プロを頑張ることを決心しました。
2024年は勉強もフルスロットル
2024年の目標の一つに、Atcoder茶色入りを掲げました。その目標達成に向けて仕事後や週末でアルゴリズム検定公式テキストを何度も解くことで、頻出アルゴリズムの理解と実装力をつけていきました。8月に公式テキスト【初級・中級】を読破し、勉強したアルゴリズムが捻りなく出題される問題は回答できるまで上達。二進数の概念を使って集合を表現するという考え方には、とても感銘を受けました。一方で、本テキストには、Union-Findやセグメントツアー等の頻出アルゴリズムが記載されていなかったため、上級テキストを購入し勉強していきました。
平日6時から勉強することもあれば、夜2時過ぎまで写経や復習をすることもありました。最大流問題や最小費用流問題は、ABCやARCで出題されても実装できるイメージは持てませんでしたが、、、新しいアルゴリズムを習得していくプロセスは刺激的でした。
ついに並行してratedの状態で、atcoderのABCを週末受け始めました。ratedで受け始めて3回目の2024/8/31のABCでついに3問完し、茶色パフォーマンスに到達。その後は平均的に3問完までいく一方で、計算量の制約に阻まれ、4問完までいかなず灰色のまま。D・E問題の解答を見ると理解できるため悔しさと落胆から毎週末リベンジの日々でした。
そんな中、土俵を変えてPaiza Sランクの一番正答率の高い問題を解いたところ、私の知っていたアルゴリズムで回答でき、Paiza Sランクまで到達。XではPaiza代表の片山様からコメントいただきました。
Atcoder経由のLT会への参加
2024/9/21にユニークビジョンプログラミングコンテスト2024 秋(AtCoder Beginner Contest 372) に参加し、3問完。LT会のご案内をいただき、LT会に参加してきました。
LT会では現職の領域と異なる開発に取り組むソフトウェアエンジニアとの交流があり、楽しい時間を過ごしました。LT会は採用色が全くなく、その点は非常に驚きました。
結果:ついに茶色に到達
2024年秋は競プロに時間をかけたのですが、計算量削減の工夫や実装力不足のためなかなか4問完の壁を越えられませんでした。しかし、諦めずに6週連続で土曜夜をABCに捧げることで、10/26のABC377で4問完(パフォーマンス1038)でき、ついに茶色入りすることができました!
2021年に細々スタートした競プロでしたが、その日についに「趣味は競プロです」と自信を持っていえるようになりました!
競プロから学んだこと
競プロを通じて、さまざまな学びや気づきを得ることができました。数多くの問題やアルゴリズム実装に取り組む中で、数学の奥深さや美しさに気づけたとはよかったです。また、その応用から大量のデータがどう効率よく処理されているのかという仕組みを知ることができたことは貴重でした。
また、Atcoder,Paizaの限られた時間内で成果が見える形式は、コンテスト参加を通じて毎週自分の現在地が突きつけられるため、短期結果確認〜復習〜再挑戦というサイクルによる長期的な目標達成に向けた新しい勉強手法を習得できたとも考えています。
最後に、競プロを通じてXやリアルイベントで多くの方と交流でき、所属する業界・職種以外にも見識を広がることができ、今回つながったご縁を大事にしていきたいと思いました。
備忘録を最後までお読みいただきありがとうございます。競プロが好きな方は今後交流できると幸いです。