AtCoder茶色になりました

AtCoder という競技プログラミングに参加続けてやっとレートが400を超えて茶色コーダーになりました。
この記事では自分がどのように勉強し、どのように解き茶色になれたか紹介していきます。
茶色になった時のレートは以下になります。
yoto1980yenのレート
ちなみに自分のアカウントはこちらになります。

AtCoderとは

AtCoder とは日本最大級の競技プログラミングを開催しているサービスです。
コンテスト内容は時間内に指定された問題を解くものでアルゴリズムに関する能力が問われます。

色変

タイトルにもある色変とはレーティングが一定の閾値を超えた時にレートの色が変わることを言います。色が変わることで1つランクが上がったと考えると分かりやすいと思います。
AtCoder ではそのコンテストで自分が発揮したパフォーマンスに応じてレートが上がっていきます。
レーティングについては AtCoder の社長である高橋直大さんのブログにて詳しく書かれています。
簡単にまとめたものが以下の表になります。

レーティング 概要
2800- もうなんか世界大会に招待されたりする
2400-2799 複雑な検索サービスや研究開発でないと活かせれないレベル
2000-2399 化け物。競プロの問題を解く機械だと思っておけば良い
1600-1999 一部上場企業で一人もいないことが結構ある
1200-1599 基礎的なアルゴリズム処理能力については疑いようがないレベル
800-1199 大抵の企業でアルゴリズム力は十分 他社評価サイトなら高評価
400-799 学生なら優秀だがエンジニアなら物足りない
1-399 参加すれば誰でもなれる

茶色になるためにやってきたこと

過去問を解く

AtCoder は似ている問題が出ることも多いので過去に行われた AtCoder Beginner Contest(ABC) の C 問題や D 問題を解くことで耐性を付けました。
AtCoder Ploblems という過去問をまとめているサービスもありますので使ってみると良いと思います。

振り返り会

週明けに先輩コーダー(水色)と振り返り会を行いました。
どうやって解けば良いのか、また便利なメソッドを教わり次に活かせるようにしました。

秘伝のタレを作る

自分は Ruby で解いていたのですが問題に対し便利なメソッドがたくさんあります。他にも振り返り会をした時に便利なメソッドを教えてもらったので、活かせるようにhiden.rb(秘伝のタレ)を作り継ぎ足していきました。

解きやすい状態にする

ただプログラムを書くだけでなく1コマンドで実際に動くか実行して試せるようにシェルスクリプトを用意してました。
その結果、時短になり C 問題を解くための時間を確保できます。

ARCに参加する

初めのうちは AtCoder Regular Contest(ARC) に参加することもいいと思います。ARC の A 問題は ABC の C 問題相当の難易度なので練習になるし、仮に一問も解けなくてもパフォーマンスが200ほど出るのでレートが上がります。

C問題の壁

茶色コーダーになるためには ABC の C 問題を解く必要があります。
一応 C 問題を解かなくても A, B 問題を早く解くだけでもなれます。
A, B 問題はただ直向きに解くだけでいいのですが C 問題は解き方を工夫しなければ TLE(Time Limit Exceeded) になってしまい正解になりません。
TLE になる理由としては2重ループする処理を書く事が多く、これをいかに1重ループで解くか考える必要がありました。
そのため入力データをソートしたり、同じ値をまとめるなど事前処理を行う工夫が必要でした。

茶色になった感想

初めて ABC に参加した時は標準入出力のやり方がわからん!からスタートしました。A 問題を解くのに20分。B 問題を解くのに40分くらいかかり C 問題に行けませんでした。
何度も参加するうちに A, B 問題を早く解けるようになったり, C 問題を解けるようになり、茶色になる頃 (16回目) には C 問題までを1時間くらいで解けるようになれました。
参加するたびに成長を感じれたのがとても嬉しくモチベにつながりました。
普段コーディングをしないので茶色になれたことで少し自信が持てました。次は緑になれるように頑張りたいと思います。

プロフィール

吉村海斗
吉村海斗
緑を目指してAtcoderやってる2年目エンジニアです。
AWSアソシエイト三冠達成しました!
AWSプロフェッショナル二冠目指してます!
Rubyが好きです。