"AtCoder Regular Contest"に初参戦しました。
AtCoder Regular Contest 109
今後は月に1回程度のペースで参戦を重ねていきたいと思っています。
この記事は個人的なブログとして参加した感想を書きたいと思います。
私について
私の競技プログラミング経験は、就職活動のためpaizaのスキルチェック問題を数回ほど。
ITエンジニア・プログラマ向けの転職・就活・学習サービス【paiza(パイザ)】
余談ですが、paizaではAランクというそこそこ難しい問題を解いて査定年収729万でした。
エンジニアにフルコミットして働き始めたのは2017年5月で、paizaの就職活動は当時2年目でした。
査定結果を確認して浮かれていましたが就職活動がそんなに甘くなかったことは想像に難くないでしょう。
経歴書が薄っぺらいですからね。
フルコミットする前は塾の先生をしていました。担当は数学。
その頃からずっと趣味の延長でWEBアプリ開発(GAE/Java)やiOSアプリの開発をやってます。
現在の仕事はPythonやReactを使ったWEBアプリ開発です。
AWSのアーキ設計やCICD構築にも関わっていて、手を動かすメンバーが5人ほどのチームで幅広くやってます。
型チェックが大好きで、PythonはMypy、ReactにはTypeScriptを使っています。TypeScriptが一番得意です。
どの言語で解くか
いろいろと迷いましたがPythonで解きました。
昨日はネットワーク環境に通信制限が掛かっていたので、npm install
やpip install
など出来ない状況でした。VSCodeでコード補完させながらコードを書きたかったのですが、環境を整えるのが困難だったのでブラウザーでいろんな言語が実行できるpaiza.ioを利用しました。
ブラウザ上でコードを書いてすぐに実行!!
paizaやっていたころはTypeScriptを使った開発がメインでしたが、TypeScriptは提出言語に選べないのでSwiftで解いていました。SwiftでPaizaを攻略するための予備知識
今後のことを考えると速さ重視でC++やRustを使って上位を目指したいです。
その前にアルゴリズム力を鍛える必要がありますけど。
その他準備したこと
計算用紙に使うためA4の紙を10枚ほど準備しました。
競技プログラミングは数学的な思考力を求められる問題が多く式を書いて計算することはよくあります。また問題把握のためにいろんなケースを書き出すときには紙のほうが便利だと思います。
解いた結果
A~Fまで全部で6問出題されます。私が取り組めたのはA,B,Cの3問だけでした。
3問提出しBだけが得点になりました。
Aには考慮不足のケースがあり「WA (Wrong Answer)」という結果が返されていました。「WAってなんだ?」という状態でその場で点数にならないことを確かめずに放置してしまったのでもったいなかった。
Cは正解が計算可能なコードでしたが愚直に問題状況をシミュレーションするようなアルゴリズムだったので「TLE (Time Limit Exceeded)」でした。TLEの意味は知っていましたが時間以内に直すアイディアが浮かばず。。
楽しかったけど、めちゃくちゃ悔しい!
次に向けて
たくさん問題を解くのが一番ですよね。AtCoderでは過去開催のコンテストもバーチャル参加が可能です。
問題に向き合って最初にやることは自分で追加のテストケースを作ることが問題を早く解く近道であるように思いました。問題には2〜3つのサンプルケースが最初から与えられていますが、それ以外のケースを自分で作る作業は短時間で問題理解度を確実に高めてくれると思います。
レーティングトップ10に入っている人たちの提出タイムを見ると頭でかなりのケースが把握できる人たちなんだろうと思いますが、私はしっかり紙にケースを書き出して答えを具体的に数え上げてサンプル以外にテスト出来る準備をしておくことが「急がば回れ」になりそうだなと思いました。
問題と向き合っているときのルーティンがある程度決まってくると、もっとミスなく解けるかなと思います。
競プロを鍛えるための道筋を示してくださっている記事もあるので、そういうところから手を付けていこうと思います。
以上、AtCoder初参戦した感想でした。