知識ゼロからAtCoderにチャレンジしてみた話【はじめてのぎょくさい】

気がついたら終わってた

# はじめに
- [AtCoderの概要を知った](https://qiita.com/kei_tnk/items/f3790ab4a25387c9bb34)後の最初の週末の[コンテスト](https://atcoder.jp/contests/abc356)に突撃してみた。
- 当然のように玉砕したね。
- 何の参考にもならないかも知れないけど、まだ始めてない人は雰囲気を掴めるかも。

# 事前勉強
- [Beginner Selection](https://atcoder.jp/contests/abs/tasks)の問題の上から順に鏡餅まで終わらせた。この程度だと、ロジックは少し考えれば思いついたけど、細かい文法を覚えてないから、それを確認するのに時間がかかった。同じ問題を複数回提出してるのは、間違えたのとか、速度向上を狙ってやり直したのがあるから。間違えたのも含めて、全て履歴が残るのはいいね👍️ 
![スクリーンショット 0006-06-02 18.37.25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/bfe5078c-096d-a017-0a4c-c6f22b1aae78.jpeg)

# 参加申込み
- [前回](https://qiita.com/kei_tnk/items/f3790ab4a25387c9bb34)は新規登録と、非レーティングのコンテストに参加したけど、レーティング付きのコンテストの場合は、「参加登録」ボタンを押した後、「Rated参加登録」か「Unrated参加登録」を選ぶことになる。ただし、運営側としては、基本的にRatedを選ぶように推奨している。（下図は、今月末に予定されているABC360の例。実際に突撃したのは、[ABC356](https://atcoder.jp/contests/abc356)。）
![スクリーンショット 0006-06-02 17.10.09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/f7e4ccf6-99be-4631-c526-c01ba29327b4.jpeg)
![スクリーンショット 0006-06-02 17.12.59.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/d62a282d-88ff-8848-8366-343729bd983e.jpeg)
![スクリーンショット 0006-06-02 17.17.08.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/129586aa-2900-49e4-1946-7cf858b88996.jpeg)

# コンテスト直前
- 開始2秒前のブラウザ。[SideKick](https://www.meetsidekick.com/ja/)というブラウザが標準で画面分割できると聞いたので、左に問題を見ながら右でコードを打てるように導入してみた。コードの試し打ちは、[paiza.io](https://paiza.io/ja)を使うことにした。本当は、[playgrounds](https://www.apple.com/jp/swift/playgrounds/)を使おうとしたんだけど、なんとplaygroundsは標準入力の画面がない。酷いよね。
![スクリーンショット 0006-06-01 20.59.57.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/855ff1fa-827d-d587-97d0-88d219490aff.jpeg)
- 問題は、A〜Gの7問あるけど、Aが一番簡単で、⇒B⇒C⇒･･･と難化していく。

# コンテスト結果
- 自分の場合は、[問題A](https://atcoder.jp/contests/abc356/tasks/abc356_a)に20分、[問題B](https://atcoder.jp/contests/abc356/tasks/abc356_b)に30分、問題Cを飛ばして、[問題D](https://atcoder.jp/contests/abc356/tasks/abc356_d)に取りかかったところ、ロジックはそれ程難しい話ではないと思ったものの、実際に走らせてみるとpaiza.ioでもatcoderのコードテストでもtimeoverしてしまい、timeover回避方法も思い浮かばず、結局時間切れ。よって、250点しかとれず、下位2割に入ってしまった。
- [問題C](https://atcoder.jp/contests/abc356/tasks/abc356_c)については、当日は問題文が頭に入ってこなかったので、簡単そうな問題Dに先に取りかかったけど、翌日に改めて問題文を読んだら、ちゃんと理解できた。
- そもそも、問題文だけだと分かりづらいので、例示（入力例･出力例）を読むことが重要だと理解した。
- で、内容を理解して問題Cのコードを書いたけど、提出結果は「TLE：実行時間制限超過」となった。これは、本番だったら部分点が付いたのだろうか？半分以上は時間内に終了してるけど。
![1000001444.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/755bc87d-0948-0d10-a965-2b6db58e60d1.png)
- うーむ、問題Cも問題Dもロジックは思いついたのに、時間効率の良い解法になってないのか...
- 問題E以降は、読んですらいないし、読む気も湧かない。とりあえず、問題C、Dの解答の何が悪かったのかの分析をしないとね。

# レーティング
- ランキング最高位の人のレーティングが3800点くらいのところ....9点！
- 凄いね、最高位の人の0.2%のレーティングしかないとか。
![スクリーンショット 0006-06-02 19.31.02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/fe1e62cd-a7b8-d3eb-7afe-f00465815ea5.jpeg)
- でも、最も人数が多いのは2点の人達なんだよね。参加したけど1問も解かないで止めた、とかなら0点じゃないのかな？変な気もするけど、イロレーティングと似たような考え方なら、0点じゃなくても変じゃないか。

# 終わりに
- 100分はあっという間に感じたけど、終わった後、どっと汗が出てきたから、体力的には辛かったのかな？
- 次は、問題C,Dの効率的な解法を理解してから臨もうと思う。もし、A-Dを全て正解すれば、950点になるけど、これは、参加者11500人中の1350位(上位12%)〜3500位(上位30%)に相当する。
- とりあえず、問題Dまでの完答を目指すね。
- (追記)最終順位が、11583だから、参加者もそのくらいかと思ったけど、最終順位って、１問も解いてない人たちだから、同順の人が結構いる。だから、参加人数はもう少し居るみたい。