はじめに

水色になったので前から書きたかった色変記事を書きます。2022/6/18 ABC256で水色になれました。開始が2020/5/31 ABC169が初参加なので大体2年1ヶ月くらいかかったことになります。そこそこ苦労したので記事を書いてしまうくらいには嬉しいです。

スクリーンショット 2022-06-19 20.16.39.png

アラサーのうちにAtCoder水色になりたかったアラフォーのWebエンジニアです。直近はDevOpsエンジニアとして社内および関連会社で扱っているPrivate NPMの開発/運用をしています。プログラミングは社会人スタートで競技プログラミングは2020/5ごろにはじめました。

使用言語

使用言語はRustです。出自がフロントエンドエンジニアなので初回だけJavaScriptを利用しました。とても辛かったので直ぐにRustに切り替えました。Rustを選んだ理由は単純にRustの勉強にもなるかなと考えたことが理由です。しかし実際のところ使用する文法や関数などに非常に偏りがあり効果の程は微妙でした。Rustの長所の1つだろう非同期処理などについても全く学ぶことができません。冷静に考えると当たり前なので想像力に欠けているといえるでしょう。
JavaScriptほど顕著ではありませんがRust自体も競技プログラミングの言語としては機能が大分不足している気はします。例えばsetのlower_boundとかはないのでABC217 D. Cutting Woodsみたいな問題は辛いです。こいつを解こうとすると座標圧縮してセグ木に乗せてlower_boundする必要があります(他の解き方もあるとは思います)。ちなみに本番では綺麗に爆死しました。あとデフォルトの型がi32なのも嫌です。結構な回数オーバーフローでWA出してます。はるかに高いパフォーマンスを出しているRust使いの方々はいらっしゃるので実力があれば大した問題ではないのだとは思います。

やったこと

2022/6/19現在AtCoderのRustのAC数は1453。LeetCodeのRustのSolvedは211です。途中で灰〜水色の手頃な問題は尽きてしまいました。困ったので同僚が最近やっているLeetCodeの過去問を解くことにしました。結果、徐々にパフォーマンスが伸び水色に到達することができました。
これはLeetCodeが良いのではなくシンプルに解いている問題の数が少ないことが原因で、yukicoderなど他のもサービスを使っても同様の結果になると思います。最近どうもパフォが伸びないとお悩みの方、別のサービスの過去問を解いてみると良いのかもしれません。少なくとも私には効果がありました。

やること

大きく分けて2つあります。使用言語をC++に切り替えることと青パフォを出すために青およびFの過去問を解くことです。
上でも書きましたが個人的にRustは競技プログラミングにはあまり向いていない気がします。なので競技プログラミングで利用者が多いC++を使ってみるかなという所存です。あとACL使ってみたいのと最近利用できる言語を増やしていないので増やすかという気持ちがあります。
初めて2年過ぎましたがコンテストで青パフォを1回も出したことがありません(1400以上のパフォーマンスは3回)。改めて書くまでもないことですが青色になるためには青パフォ出す必要があります。そのためにも今まで解けなかった問題をまず解ける必要になるのかなと思っています。なので腹を括って青およびFの過去問を解いていきたいと思います。基本的に見たことタイプの問題は茶色とかでも普通に解けないことが多いので、引き続きLeetCodeないし何某かのサービスで問題を解いていこうとは思います。

おわりに

最初の目標であった水色は到達しました。次の目標は青色です。アラフィフになるまでに実現できれば良いなと思います。何年先になるかは不明ですが、その頃にまた記事が上がっていたら読んでもらえると嬉しいです。それでは

广告
将在 10 秒后关闭
bannerAds