はじめに
AtCoder を 2024 年 9 月に始めましたが,ABC417 でレーティングが 823 となり, 緑色になりました.
しばらくは緑と茶を行ったり来たりだと思いますが, 入緑の機にこれまでの取り組みを振り返ります. 言語は Python で, Windows でプログラミングをしています.
Who Am I?
技術系のサラリーマンです. プログラミングを本業とはしていません.
Python は, 2020 年の新型コロナで家にいる時間が長くなったときに勉強し, そのときは Kaggle のタイタニックや手書き数字認識などをやりました. でも, それ以降は Python を使う機会がありませんでした.
そこで Python の勉強を続けるために, AtCoder を始めました.
やったこと (灰~茶の前半)
C 言語とかは学生時代にかじったことがありましたので, 最初の頃は Python らしくないプログラムを書いていたと思います. list()
, dict()
, set()
などの使い方などは, ABC で問題を解く際にネットで調べて少しずつ身につけていきました.
その後は, 主に Paiza のレベルアップ問題集 (と, チケットを稼ぐために プログラミングスキルチェック) をやりました. DP, 平方分割, 木などの基本的な考え方は, Paiza に教えてもらいました.
やったこと (茶の後半)
2025 年 3 月~ 4 月は年度末で忙しく, 精進が滞ったこともあり, レーティングが下がり続けました. また Paiza のスキルチェックも徐々に難しくなり, 考えてもなかなか解けないようになりました.
そこで, 精進方法を変えました.
精進方法
競プロ典型 90 問
様々な問題を広く浅く取り組もうと考え, 競プロ典型 90 問 の★★★と★★★★をやりました. 解ければ OK, 解けなければ upsolve することにし, 少しずつ進めました.
★★★★★は今の私には難しすぎると考え, 次に ADT を始めました.
AtCoder Daily Training
「競プロ典型 90 問」の後に取り組んでいるのは AtCoder Daily Training (ADT) です. こちらはオンタイムで取り組むのは難しいので,
- 通勤の行き, 帰りに ADT (Hard) の 300 点~ 400 点の問題の考察をやる
- 週末にコーディングする (2 問くらい)
というやり方をしています.
その週の全ての ADT の問題を見ることはできませんが, 経験値は少しずつ増えている感じがします.
振り返り
ABC に参加したら, なるべく ブログ で振り返りを書いています. 考えを言語化することで, 何となくプログラムを書いていた部分の理解が深まる気がします.
ただ振り返りを書くのは時間が結構かかるので, 書き方を工夫する余地があります.
upsolve
ABC で解けなかった問題 (C ~ E) をなるべく upsolve するようにしています. 解説で分かれば OK ですが, 解説を読んで分からないときは他の参加者の AC したコードを見ながら考えます.
他の人のコードは, 割と参考になります. なので, 私も upsolve するときはコメント多めで書いています.
その他
プログラミング環境
実は当初は JupyterLab でプログラムを書いていました. しかし「もっと書きやすくならないか」「学生時代に使っていた Emacs が忘れられない」ということで, Emacs のキーバインドを再現できるエディタとして VSCode に引っ越しました. Emacs キーバインドは Awesome Emacs Keymap を入れてます. META キーに ESC を使えない (Alt で代用) のが気になりますが, それを差し引いてもかなり快適です.
しかし Windows 全般は Windows 標準のキーバインドのままなので,
- VSCode 内のペーストは Ctrl-Y
- AtCoder でプログラムを提出する際のペーストは Ctrl-V
となって, ちょっとイマイチです.
ちなみにフォントは PlemolJP です.
Python
2020 年に Python をインストールしたっきりでバージョンが古く, 例えば int.bit_count()
などが使えませんでした. なので, Python のバージョンアップをしました.
何年もバージョンアップしていない人は, バージョンアップしてみてはいかがでしょうか?
画面配置
私はノート PC のみを使ってプログラムを書いているのですが,以前はブラウザとエディタを画面いっぱいに広げ, Alt-Tab で切り替えながら使ってました.
あるとき, どなたかの画面キャプチャを見たときに,
- 左半分 ; ブラウザ (AtCoder の問題を表示)
- 右半分 ; エディタ
となっているのを見て, 真似をしています.
手元にノートを置く
コンテスト中に, 考察用にノートを置いて, 手を動かしながら考えるようにしました. 200 点くらいまでの問題は何も書かなくても解けますが, 250 ~ 300 点以上の問題は, 分からないときはノートに何か書きながら考えたほうが良いような気がします.
今後
「緑になりました」と言っても, C ~ D 問題を安定して解けているわけではないので, しばらくは難しい問題にチャレンジするよりも, ADT などで C ~ D 問題をこなし, 安定性を高めていきたいと思います.
個人的には atcoder-cli を使えるようになりたいなと思っています.
Twitter では若い人の活躍はもちろんですが, 同じような年代や同じような立場 (と思われる) 方も AtCoder に取り組まれており, 私自身のモチベーションアップにつながっています.
今後とも, よろしくお願いします.