
【色変記事】出場3回目にして2回目の茶色になったので初めて色変記事を書いてみた~AtCoderのすゝめ~
以下の文章は驚異的な国語力のなさにより、非常に読みにくいことが予測されますので、注意して読んでください。
先週のABC276で、パフォーマンス1399という私としては驚異的(弱冠21歳にして驚異的という言葉にハマっています。)なスコアにより、無事入茶することができました。もしかすると、このマッターホルンよりも鋭い傾斜を見て、「うぉ、あぁ、そっち系の、ああぁ、天才系の方ですか」と思われた方がいるかもしれません。まあ天才なんですけど。(大嘘)
実はAtCoderは一年半前に少しやっていて、茶色中位ぐらいのレートを持っていたからまだ今はブーストがかかっているだけです。
その辺の説明と、自己紹介を兼ねた私の説明、なぜAtCoderに復帰したのか、茶色になるために必要な知識や技術について今回は書いていきます。
よろしくです。
はじめまして
どうも。たった3回の出場で堂々たる茶色入りを果たした天才こと LiKafと申します。
基本的なスペックとしては、一浪して入学した理系大学の学部3年生で、コンピュータサイエンスというか、通信技術というか、うーん、、どっちでもないような謎の勉強をさせていただいております。本当に説明できません。なんなんでしょうか。
好きな食べ物としては二郎、ホルモンがごろごろしている焼肉、異常な量が出てくる中華料理です。お菓子とアイスは常時食べていますし、今はタラタラしてんじゃねえよを食べながらやっています。
好きな音楽は、ヨルシカ、美波、ずとまよ、花譜らへんで、乃木坂のあるメンバーのことがガチで好きです。結婚してください。
加入しているサブスクはYouT…
まあもうめんどくさいのでやめますが、そういう人間です。
第一次AtCoderブーム
一番最初にAtCoderを始めたのは二年生になる前の春休みで、友達の誘いというか、TwitterのTLでよく見かけていたので始めてみました。
まぁそれはそれは難しくて、そもそも生まれてからプログラミングというものをしたことがない私は「あ、あかんわこれ」となりながらもちょっとずつレートを上げていきました。

プログラミングの勉強
先に述べたように、プログラミングをしたことすらなかった私は、大学入学時に買って、10pしか読まないまま床に転がっている有名なJavaの入門書を薄目で眺めながら、どうすれば飽きずにプログラミングの勉強ができるかを考えました。
よくわかんないけど、とりあえず、AtCoderの提供している、APG4b(C++入門 AtCoder Programming Guide for beginners)をやってみました。
感動しました。あんなにすぐ飽きてしまう私が、最後まで完遂できました。理由は一つです。他の書籍でプログラミングを勉強しても、実際にそれに関連するコーディングを自ら進んでやらない限り、入出力の方法、型、ループなどについて読んだところで、「で、あなた、結局何されてる方なの?」状態になります。
いわゆる「こうすればループ出来るんだー」「へー、」「で?どうなんの?それ知ったところで」状態です。何も言い換えれていませんすいません。
しかしこの!APG4bは!実際の算数的な問題を用いて!目の前の問題について取り組むということを通じて!入出力の練習!型の意味!ループ構造!条件分岐について!学ぶことができる神コンテンツ!です。
(算数という言葉を聞いてアレルギーの出たあなた、大丈夫です。足し算引き算レベルの問題も無限にあります。)
まあそういうわけで、APG4bで初めてのプログラミングを習得?しました。
私は傍目から見れば情報系の学科に通っているので、非情報系の友達から、「どうやってプログラミング勉強すればいい?」と聞かれることがあります。その度に私は、「APG4bをやれ!!んでAtCoderをやれ!!」と早口で捲し立てています。
アルゴリズムの勉強
少なくとも第一次AtCoderブームでは、アルゴリズムの勉強は一切していません。個人的にはアルゴリズムを知らなくても茶色まではいけると思います。
正直、茶色になるまでの間は、アルゴリズムの勉強をするよりも、A,B,C問題の早解きができるようになる方が大事だと思います。(序盤を早く解けないと、アルゴリズムを用いて解くような難易度が高めの問題を解く時間が少なくなるので、これができないことにはアルゴリズムを覚えても仕方ないと思います。)
アルゴリズムの勉強より、APG4bに載っている、pairや、map、set等の簡単な使い方を覚える方が重要だと思います。
飽きた
Highest662の次のABCで、初めてまともにレートが減少しました。それで一年前の私は辞めてしまいました。
なぜ辞めたのかというと、レートが下がったからではなく、明らかにパフォーマンスが停滞していたからです。アルゴリズムを一切学ぼうとしない姿勢のままではパフォ700前後が(私の)上限でした。
アルバイト
第一次AtCoderブームにおいて私にとっての転機が訪れました。
Twitterで「プログラミングのバイトしてー」とツイートしたところ、同じ大学でAtCoderをしている同級生に「僕のインターン先くる?」と言っていただき、そこで働くことになりました。
それもこれも、AtCoderをしていたおかげで、自分よりも優秀な人たちとの人間関係を持てたこと、また、「AtCoder茶色だから、まぁなんとかなるだろ」という安心感を植え付けることができたからだと思います。
(本当になんとかなったかどうかについては、それを記すには余白が小さすぎるので省略します。)
第二次AtCoderブーム
よくわかんないけど、久しぶりにやっちゃおーと思って再開しました。
アルゴリズムの勉強
入茶した時のパフォが、1399だったのは、間違いなく授業でとったアルゴリズムとデータ構造についての講義のおかげです。
第一次AtCoderブームの際は、DP,BFS,DFSメモ化再帰など、一切知らなかったのですが、なんとなく受けていたアルゴリズムとデータ構造の講義で習ったBFSなどを思い出しながら実装してみたところ、解けました!
その経験から、ちゃんとアルゴリズムを勉強したら緑とかもいけるかなーと思って鉄則本を買って、鋭意勉強中です。
茶色になるために必要なこと
私が茶色を目指している方に最も伝えたかったのは、アルゴリズムの勉強も大事だとは思いますが、
APG4bに載っている1.14.STLの関数や、3.03STLのコンテナをしっかり覚える
A,B,C問題の速解きができるようになる(目安A=2~5分、B=4~12分、C=10~20分)
をとりあえず最低条件として目指していけばいいと思います。
まとめ
いかがでしたか?(トレンドブログ)
うーん、文章を書くって難しいですね…
とりあえず第二次AtCoderブームは、少なくとも水色になるまでは継続していこうと思います。てかマジで鉄則本いいわ、神
あと、一日1ACを続けて今日で28日です。いやぁなんか、毎日続けてやっているものがあると、それが自信につながりますね。
ありがたいです。最近は友達に口をひらけばAtCoderの話をしてしまっています。以後気をつけます。
あ!Twitterフォロー待ってまーす!仲良くしてください!
ではまた!