見出し画像

AtCoder入茶記事!

 2022年5月21日、ついにわたくし、せるたわーθがAtCoderにて入茶をキメることができました!!(上の画像は私のユーザー画面です。)私がこの時点までに何をしてきたのかを伝え、「こんなテキトーやつでも入茶できるんだな!」という安心感をお届けするのがこの記事の目的です。何かひとつでも、読んでくれる方にとって役立つことをお伝えできればうれしいです…!

「解けた!を世界に届けたい。」すてきなコピーですね。私は安心感をお届けしてまいります。

0.自己紹介

 改めまして、せるたわーθ(Twitter:@LaserTHETA)と申します。よろしくお願いします!!メインはC++で、たまにPython3を使っています。2006年生まれの高校2年生です!
 AtCoderのユーザー名はymmtrです。なぜこの名前にしたかというと、できるだけ少ない文字数のユーザー名が良かったからです。(??)

1.茶色ってどのくらいのレベル感なの?

 AtCoder 社長の高橋直大さんのブログによると、

茶色 (Dランク Rating 400~799 上位50%)
茶色になる条件は、Ratingが400以上になることです。茶色で保証できる実力ですが、正直、AtCoder内ではあまり高いレベルではありません。ただ、ここにたどり着く前に辞めてしまう人が多いので、十分にやる気がある人であるとは言えるでしょう。
なお、他社転職サイトと比較すると、このレーティングでも上位1~2%の最高ランクに到達出来る人が数割いるため、一般的には十分高いレベルであると言えます。

個人的な印象としては、
情報系の学生が茶色であれば、ちゃんと勉強してるなって印象になる
派遣で来たプログラマがAtCoder茶色だったら結構安心する
茶色があればエンジニアとしてアルゴリズム面においての安心感があるかと言われたら、正直物足りない
みたいな印象があります。(以下省略)

https://chokudai.hatenablog.com/entry/2019/02/11/155904
「AtCoder(競技プログラミング)の色・ランクと実力評価、問題例」より引用

とのことらしいです。
 詳しくは引用元のブログを見ていただけると…!(丸投げ)

2.入茶までの道のり!

1.解いた問題の数

 入茶するまでの総AC数はちょうど400問です。
ABC(AtCoder Beginner Contest;初心者・中級者向けに毎週末に開催されるコンテスト)の過去問だけで見ると A: 171 B: 97 C: 55 D: 17(単位:問)ぐらいです。
 練習時間は、1日に平均1時間ほどです。難しめの問題(CとかDとか)のAC比率が小さいですね…。もっと精進します…!

2.コンテスト参加回数

 入茶するまでのコンテスト参加回数は18回です。本格的に競プロに取り組み始めたのは2022/1/23のABC236あたりからです。だいたい4か月かかりました…。私は密度の薄い精進をしていたので、集中して取り組めばもっと早く入茶できます笑

3.利用してきたネット上のコンテンツ

1.AtCoder

 AtCoderはコンテストサイトなのですが、初心者向けの学習コンテンツもそろっています!うれしい!
 ということで、まず、APG4bというコンテンツを利用して、C++の基本的な使い方を学びました。
 次に、過去問が精選されているABSというコンテンツを利用して、問題の雰囲気をつかみました。
 そして、ABCに出場しまくりました!!
 もちろん、APG4bの第2章を終えたころからはABCの過去問埋めもやっていました!!

2.アルゴ式

 ただの神サイトです。私はこのサイトで主に動的計画法(DP)についてを学びました。解説がとても丁寧です!解き進めていくうちにわからない問題が出てきますが、解説に大いに助けられました!解ける問題の幅が大きく広がります!!

3.Aizu Online Judge(AOJ)

 Introduction to Programming (ITP-1) を(トピック11を除いて)解きました。
 文字列の扱いに慣れることができます。C++であれば、大文字かどうかを判定するisupper()とかの便利機能があることをここで学びました。

4.いろんな人の記事

 E869120さん(競プロ典型90問や「アルゴリズム×数学」本の著者)や、けんちょんさん(「問題解決力を鍛える!アルゴリズムとデータ構造」の著者)の記事を特によく見ておりました!おすすめの記事を紹介します。

E869120さん:
「レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【初級編:競プロを始めよう】」

 E8さんに手を引いてもらっているみたいで、とても頼もしかったです!AOJについてはここで知りました!

けんちょんさん:
「特集!知らないと損をする計算量の話」

 vectorなど基本的なデータ構造を使う際の、計算量についての感覚を身につけることができました!

4.茶色になるまでに触れたアルゴリズム

 特によく使った4種類をご紹介します。
 ・貪欲法 おすすめ記事: 高橋直大さんの記事
 ・二分探索法 おすすめ記事: CodeZineさんの記事
 ・動的計画法(DP) おすすめ記事: アルゴ式のページ
 ・累積和 おすすめ記事: けんちょんさんの記事
 正直、貪欲法については感覚的に使っているのですが、AtCoderのコンテストアドミンである、りんごさんが

直感に頼った未証明の Greedy は危険です。

https://img.atcoder.jp/panasonic2020/editorial.pdf
パナソニックプログラミングコンテスト2020 Editorialより引用

とおっしゃっていたので気を付けなければなりませんね…。(自戒)

5.入茶の感想

 やっぱりシンプルにうれしいですね!初めての色変は感慨深いものがありました。正直自分は一生灰色コーダーをやる覚悟でしたが、直近2回の上振れが激しくて、運で入茶できました笑。この記事では、今まで私がどんな取り組みをしてきたかを書くつもりでしたが、うまく説明できず、かなりあいまいな表現になってしまってごめんなさい><

 わたしは、いまだABCのC問題をコンテスト中に安定してACできる水準に達していません。逆に言えば、ABCのA,B問題を15分以内に解く、かつ、簡単めなC問題をたまにACするぐらいで茶色になれるとも言えます。A,B問題は基本的な問題が多いので、過去問を解いて、確実に早解き出来るように訓練すれば半分ぐらい入茶したようなものです。(!?)そんなにハードルは高くないように感じませんか??

 私が強く感じたことに、「数学力は大きな強みになりうる」ということがあります。たとえば、ABC252-Dなどは高校数学Aの「場合の数と確率」の単元で学習する内容を利用すれば結構楽に解けたりします。(詳細はtoamさんの解説をご覧ください。)

 私が個人的におすすめすることは、作問をすることです。問題を解くのもいいですが、作るともっと楽しいです!私は、ABC過去問のミソとなる部分を利用して作問をしました。作問をする際には、自分の力でコーナーケースを考える必要があるので力が付きます、たぶん。
 問題を作ったなら公開しないといけないというわけではないですし、気軽にやってみるとよいでしょう。

6.今後の展望

 PAST本や螺旋本などに手を出すのもありかな…と思っているところです。現在E869120さんの「アルゴリズム×数学」本を読んでいるところなので、100%の理解…とはいかなくてもある程度までは自分のものにしたいと考えています。典型90とかもやりたい…。

最後に、学ぶって最高!!ということをお伝えしてこの記事を締めさせていただきます。ここまで読んでくださりありがとうございました!!!!!
                      2022/05/23 せるたわーθ


この記事が気に入ったらサポートをしてみませんか?