やったこと
毎週参加
C問題まで解けて、ある程度D問題も解けたので、パフォーマンスがだいたい800を超えていました。
800ちょい超え程度だと、上昇量は少ないです。でもやっていれば上がります。
そうして、とにかくやっていたら緑になりました。
途中Unrated続きで心が折れてました。折れながらもルーティン的に続けられたので、習慣の勝利。(^^*)
結果論、Unratedだとしても、1時間40分集中しているときが一番成長を感じるので、それも含めて糧になっていると思います。
資格取得
基本情報と応用情報を取りました。
資格自体はAtCoderの特効薬にはなりませんが、取得の過程で身についた力がAtCoderに活きていたと感じました。
アルゴリズム問題で身についた力は3つ、問題に取り組む忍耐力と、仕組みを考える力と、具体的な実装に起こす力です
AtCoder緑になったの、もちろん毎週参加でチマチマ上げたのもあるのですが、
— れあ (@rare0b) July 19, 2023
主要因は基本情報・応用情報のアルゴリズム問題だと思いました
アルゴリズム問題で身についた力は3つ、問題に取り組む忍耐力と、仕組みを考える力と、具体的な実装に起こす力です
競プロ対策には遠回りなものの超良い資格
高校数学やり直し
数Ⅲまで一通りやりました。あと、線形代数もやりました。
具体的に技術が身についたわけではありませんが、問題の解像度を上げるのに貢献しています。
例えば以下のような問題に活きていたと思います。
- 動的計画法を使うなど、漸化式的考えが必要
- Σや微積など、直接的に数学が出てくる
こちらの件はQiitaの記事にしています。
1年目エンジニアが半年かけて高校数学をやり直した記録
競プロをやっていてよかったこと
コーディングテストに強くなる
AtCoder茶程度あれば、難しいものを除くと、だいたい解けます。
現在、2days~5daysのインターン4社に参加が決まっています。
全部コーディングテストが解けたおかげです。
具体的な内訳は、
- Track Job経由→2社
- Paiza(Aランク)経由→1社
- 選考過程でコーディングテスト有り→1社
です。
毎週参加していれば、なまることもないので、急なコーディングテストでも安心です。
ちなみに、大変お世話になっているTrack Jobでは、25卒向けのインターン獲得できる(かも)なコーディングテストが開催されています。一緒にやりましょう
https://job.tracks.run/challenges/programmingtest-25-01
実務をコードで効率化できる
Excelやテキストファイルのチマチマ業務に時間を取られていたところ、VBAやPythonを書いて効率化できました。
実務でやっていること(≒競プロの問題で達成したいこと)を、どう実装するか考え、具体的な実装に起こす、という過程がまさに競プロで培ったものでした。
なんの参考にもならないと思いますが、以下実際にやったことになります。
「コードを書けたから業務が回った」なんてこともあり、私なりにバリューを発揮できたのは嬉しかったですね。
-
VBAで書いたもの
- 60万行のデータから、6千個のグラフを作成する
- Excel管理のデータベース定義情報から、自動でDDL作成
- マクロの記録でツギハギされた複数VBAを、必要なロジックだけ抽出し1つにまとめる
-
Pythonで書いたもの
- スキーマ名を変えてSQLファイルを複製する作業を、ファイルパス入力のみで実行
- 数万行のSQL実行ログから、正規表現で必要な情報を抽出
- テーブル作成DDLで、テーブル毎に個別の設定値を記入
あと、競プロではC++、業務ではVBAやPythonを書いていた私から言わせると、
競プロで身についた力は他の言語でも発揮できます。
頭の中で・紙の上で考える段階までは全言語共通で、具体的な実装も言語差あるものの共通点が多いですから、当然ですね。
ちなみに、VBAは置いといて、なんでC++じゃなくPythonなのかというと、
Pythonはライブラリが豊富で雑な書き方でもコードが動くので、ぱっと書いてぱっと使うハードルが低いです。
私の業務では競プロと違って、1,000,000,000の入力なんて無く、せいぜい1,000、多くて1,000,000程度です。O(N)で解決できる問題ばかりで、未コンパイルPythonでも十分高速ですから、C++よりもすぐコード書けるPythonを使っていました。
おわりに
お読みくださりありがとうございました。
Twitterで話しかけて頂けると喜びます。よろしくお願いします。
また、CodeQUEEN参加予定です。参加される方も、されない方も、ぜひ仲良くしてください。(女の子のエンジニア仲間と、25卒仲間、ほしい…)