def yasuharu519(self):

日々の妄想

2024 年競技プログラミング的振り返り

2024年を振り返ってみたときに、1年を通して継続できたことの一つに競技プログラミングの学習がある。今後のメモのためにも 2024 年で競技プログラミング的にどのような変化を作れたかを振り返りたい。

ABC への参加とスコアの変化

ABC (AtCoder Beginner Contest) は AtCoder 社が開催しているコンテストのことで、ほぼ毎週土曜日の夜 21時に開催されている。予定がないときはなるべく Rated で参加するようにしていたし、頭の片隅に常にあったので、用事があってもなるべく参加出来るように早めに用事を終わらせるようにしていた。

Beginner Contest という名前でもあるため、簡単なコンテストなんだろうと参加するまでは思っていたけど全くそんなことはなく、 "Beginner" の幅の広さを感じる。参加し始めると全部解ける人は本当にすごいとより強く感じる。

記録を見てみると、2024 年は ABC に 合計 36 回参加したらしい。毎月 3 回程度はでられたと考えるとなかなか頑張ったほうだと思う。スコアも 2024 年最初のスコアが 879 で最新のスコアが 1061 なので、+200 ぐらい。水色 (スコア 1200以上) を目指して頑張っているけど、水色の難易度の問題は自分にとってはまだまだ難しく、水色への道のりの遠さを感じる。それでも学習してちゃんとスコアが上がっているのは嬉しい。

参加時のスコア分布

Rated で参加した際のスコア分布は以下のような感じになった。最近は参加すると A~D の問題までは解けることが多い。どれもスムーズに解けたら水色スコア、ゆっくり解いたり WA を何度も食らったりすると、茶色か緑になる。水色を目指すにはスムーズに D, E ぐらいまで解けること、E, F 等の難易度の問題を解けるようになることのどちらかが 必要そう。

スコアの分布的にはこれこそ "ザ・緑" って感じのスコアになってしまっていて、来年はこのヒストグラムをもう少し右寄りにしていきたい。

スコアアップに向けた学習

AtCoder のスコア向上のため、時間があるときには AtCoder の過去問を解くようにしている。 AtCoder problems (https://kenkoooo.com/atcoder/) で見た 2024 年の Progress は以下のような感じで、お仕事をお休みしていた 4 月 5 月あたりは頑張っていた形跡が見られますね。

AtCoder problems では、合計 streak も見ることができ、モチベーション維持につながっていてとても有り難い 🙏 Streak 続けようとすると、つい簡単な問題を解くことに逃げがちなのだけど、水色・青色の問題も解けるように学習していきたい。

時間があるときには、コンテストの回答をブログにまとめることも出来た。

今も Obisidian に回答をまとめるときもあるけど、改めて言葉で説明できるかどうかで自分がちゃんとアルゴリズムを理解出来ているのかが自分でも確かめられてやっぱり言語化は大事だしよい。

Advent of Code 2024

確か Advent of Code の存在を知ったのは、 id:sugyan さんの Advent of Code 2023 を完走した - すぎゃーんメモ の記事だった気がする。そのときも確か 2023 年のやつに挑戦しようとしたのだけど、一気に 25 問解くのはとても大変に感じてほとんど解かずにやめてしまった。あとは単純に自分のレベルが足りず問題を解くことが出来なかった。

今回は 12/1 のタイミングから始めることができ、毎日一つずつ出てくる問題を毎日解くようにしていった。難易度もちょうど良くて、たまに難しいものがあってもヒントを見たりしたら解けるようなレベル感でとても良かった。世界中で同時に問題が公開されて、みんなで同じ問題を解いているという実感もとても楽しかった。 Reddit の Advent of Code のページでは、ただ問題を解くだけじゃなくて可視化に挑戦したりしている人もいてとても面白い。

今回はたまに Reddit のページを見たり、YouTube の解説を見たりしたものの、ほとんどの問題は自力で解くことができたのはとても成長を感じる。

個人的には Day14 のロボットの位置を求める問題や Day21 のキーパッドの問題、 Day24 の論理ゲートの問題はとても面白かった。論理ゲートの問題は加算機ってどんな構造だったっけ? って調べながら解いたのはわくわくした。

回答は Zenn にまとめるようにしてみたけど、問題の難易度は結構違っていて濃淡があるので、個別の記事と言うよりは Zenn の Books にまとめた方が良かったかもしれない。

2025 年に向けて

2023 年ぐらいから ABC の参加だったり競技プログラミング関連の勉強しだしていて、2024年は一年を通して取り組むことが出来た。

学習する前と比べると、データ構造やアルゴリズムの知識も増えたし、問題への苦手意識も減った。アルゴリズムの計算量オーダーも意識するようになった。使えるアルゴリズムの手札が増えたことで、問題を見て全くわからんという状態から「このアルゴリズムだといけそう」みたいなあたりが付けれるようになったのも嬉しい。

来年こそ入水するぞ!