はじめに
ある有名Web系会社のエンジニア採用担当者の方が競技プログラミングに挑戦し、採用候補のエンジニアはもちろん、社内のエンジニアとのコミュニケーションに活用している事例を読み、大いに刺激を受けて参加を始めたAtCoder Beginner Contest(通称ABC)。
刺激を受けたのは自分自身もエンジニア採用を担当しているからである。〇年前までソフトウェアエンジニアだったことを思い出し、久しぶりにコーディングをしてみようと思うに至った。学び直しや発見があったのでここに記録しておこうと思う。
3回参戦し、すべてでA問題(100点)とB問題(200点)を正解した
・・と書くとすごいと受け止められるかもしれないが、 AtCoder コンテストについての tips - Qiitaによると、A問題は
簡単な文法の確認
B問題は
簡単な for 文、if 文を含む処理, Fizz Buzz と同程度
とのこと。この2問どまり、というのはエンジニアだった事実を隠したくなるくらいのお恥ずかしいレベルである。が、今の自分から進歩して、社内外の優秀なエンジニア達から**「技術トークが多少わかる人事」**として信頼を得たい―その一心で、恥を忍んで今の状態を投稿することに決めた。
なお、言語は弊社フロントエンドで使われているJavaScriptを選んだ。
AtCoder Beginner Contest お試し参戦ふりかえり
ABC 170 (6/14開催)
A問題 - Five Variables
- かなり時間をかけて正答
- 「どれが0かを判定する」のところで
==0
でなく=0
と書いてしまった
B問題 - Crane and Turtle
- かなり時間をかけて正答
- 問題文に「発言が正しいような鶴と亀の数の組合せが存在すれば Yes、なければ No と出力せよ。」とあったのに、全部小文字で
yes
no
と出力してしまった
ABC 171 (6/21開催)
A問題 - αlphabet
- かなり時間をかけて正答
- 「JavaScript 大文字 小文字 判定」で検索。正規表現を使用
B問題 - Mix Juice
- かなり時間をかけて正答
- 「JavaScript ソート」で検索
C問題 - One Quadrillion and One Dalmatians
- 提出できず
- 「26進数」という言葉と結びつけば解けたらしい(社内のエンジニア談)
ABC 172 (6/27開催)
A問題 - Calc
- かなり時間をかけて正答
-
2+4+8
が248
になってしまった・・散々悩んでparseInt
を思い出した
B問題 - Minor Change
- かなり時間をかけて正答
- 「JavaScript 等しくない」で検索。
!==
を忘れていた
C問題 - Tsundoku
- 初めて提出できたものの、用意されていた20問のテストケースのうち4つしか通らず不正解
- 計算時間も考慮する必要のある問題(エンジニアの友人談)
おわりに
前述のQiita記事によると、今の私のレベルの人のアドバイスは「C まで頑張って解くことを目指しましょう」。
A, Bをサクサクっと解いて、じっくりCを考えるという時間配分ができるレベルに早くなりたいなと考えている。
とは言え、エンジニア転向予定の無い私が、アルゴリズム・データ構造等コンピューターの基礎を体系的に学ぼうとすると心が折れてしまうので、まずは7月末までABCへの参加を継続することを目標にする。
また、お試しで一度やってみよう、くらいの気持ちで始めたのに、その後参加を継続できているのは、参加を促してくれたり励ましてくれるエンジニアの友人の存在が大きい。気づいたらメンター的存在になってくれていたその友人に感謝。そして、いつかこの記事の続編でCが解けたことを報告したい!