趣味でPAIZAのプログラミングコンペに参加している。
このコンペは、プログラマーを募集している企業と連携しており、高得点を出すとスカウトが届く仕組みになっている。
実際に自分の実力を可視化できる上、評価結果がそのまま就職・転職活動にもつながるのは非常に面白い。
ランク制度と実力の目安
PAIZAには明確なランク制度があり、自分の技術力を客観的に知ることができる。
ランク | 実力の目安 |
---|---|
S | 超上級者(競技プログラミング上位レベル) |
A | 上級者(企業のコーディング試験を高レベルでこなせる) |
B | 中上級者(基本的なアルゴリズムと応用ができる) |
C | 中級者(よくあるコーディング課題を解ける) |
D | 初級者(基本的な文法と構文が使える) |
E | 超初級者(文法を覚え始めた段階) |
F | 登録直後/未評価 |
Bランクまでは、ある程度の基礎とアルゴリズムの知識があれば到達できる印象であり、一般にプログラムができると言われている人ならばBランクにはすぐに到達するだろう。
しかし、Aランク以降になると、全探索では解けない問題が多く、計算量を考慮した効率的なアルゴリズム設計が必要になってくる。例えば、Union-Find、ダイクストラ法、セグメント木、DFSの工夫など、知っておくべき技術が一気に広がる。
Sランクはまだ挑戦していないが、競プロ経験者やアルゴリズム上級者たちが集まる領域であり、最適性や実行速度への深い理解が必要とされるレベルだ。私は、ここまで到達したいと思っている。
PAIZAの規約と注意点
PAIZAでは、以下の行為が明確に禁止されている:
- 問題および提出コード、ヒントをブログやSNS等に掲載する行為
- 他の受験者の解答コードを検索して閲覧する行為
- 解答後においても、他者と問題について相談等する行為
🔗 公式ガイドライン
これらの禁止事項を破ると、アカウント停止やスカウト対象から除外される可能性もある。
特に自分で書いたコードであっても、問題文や構造を含む形で共有するのは避けなければならない。そのため、このブログでも、規約を遵守して具体的な問題の回答を書くことはしない。
しかしながら、この競技プログラミングで初めて知った高度なアルゴリズムについては、徐々に紹介していきたい。
学習効果と成長実感
PAIZAの問題を日々少しずつ解く中で、アルゴリズムの本質や設計の考え方が徐々に理解できてきた。
特に、ChatGPTを使って自分のコードをリファクタリング・改善していく過程は非常に効果的だった。その中で、以下のことに気がつくことができた。
- 自分のコードの無駄に気づける
- Pythonで書いた処理の計算量を即座に指摘してもらえる
- よりシンプルかつ効率的な実装に導かれる
そのため、ChatGPTは、独学者にとっての最強のペアプロ相手だと思う。
AtCoderとの違い
AtCoderも非常に優れたプラットフォームであり、数学的・理論的な問題に強く、解説も豊富だ。
PAIZAとの違いを一言で言えば、以下のような印象がある:
項目 | PAIZA | AtCoder |
---|---|---|
評価 | 自動ランク/スカウト連携 | コンテスト順位/レーティング制 |
問題傾向 | 実務系・企業想定問題が多い | 数理・競プロ寄りの問題が多い |
難易度調整 | 比較的優しめ | 難問も多い/段階分け明確 |
初心者向け | 解き始めやすいUI/言語自由 | 解説も丁寧だがややハードル高め |
どちらも並行して学ぶのが良いと感じるが、個人的にはPAIZAで徐々に実力をつけていき、その後AtCoderをチャレンジすることをおすすめしたい。
非情報系出身でも挑戦できる理由
自分は理系の大学を卒業しているが、情報系出身ではない。そのため、大学でもアルゴリズムや計算量理論などには触れてこなかった。
しかし、PAIZAやAtCoderのような競技プログラミングで高いスコアを出したい場合には、高度なアルゴリズムの理解が必要である。しかも、これらのコンペについては、当然ながらChatGPTを助けを得て回答することは当然ながらできない。PAIZAの公式FAQでは、以下のように記載されている。
「生成系AIや他者から得た解答コード、ヒントを利用しない」
「生成系AIを利用した一切の行為」
「生成系AIを利用して、標準ライブラリ関数の利用方法を確認することも禁止行為になります」
— コーディングスキルチェック受験での禁止行為paizasupport.zendesk.com+2paizasupport.zendesk.com+2Zenn+2
このように、スキルチェック中にChatGPTなどのAIを使用することは、問題の解答やヒントの取得、標準ライブラリの利用方法の確認を含め、すべて禁止されている。また、当然ながら生成AIを使った回答を出しても、自分の実力を上げることができない。しかしながら、ChatGPTを活用してコードの改善やアルゴリズムの理解を深めることができる。
具体的には、1) 自分の書いたプログラムを回答して、解答を提出 2) 得点を確認 3) 解答をChatGPTに見てもらい、そのロジックを理解する ということを繰り返すことが自分の実力を上げることになるだろう。
これからの目標と発信の方針
今後はSランクの問題にも挑戦してみたいと考えている。
また、PAIZAの規約を遵守した上で、より多くの人に高度なアルゴリズムを使ったプログラミングの解決方法を伝えていけたらと思っている。
コメント