🐈

30代プログラミング初心者がAtCoderで緑色になった所感

15 min read

まえおき

プログラミングを始めておおよそ9ヶ月程度で入緑しました。
これまでの流れを振り返りつつ、競プロに対するお気持ちを綴ってみようと思います。
いわゆる「競プロをする上でアドバンテージになる性質」を、私はほぼ持ち合わせていませんでした。「そういったプロフィールの人でもなんとか入緑できたよ」ということを、私と似たような属性の人にも伝えたい、というのも本記事を執筆している動機の一つと言えます。

プロフィール

  • 年齢:30代前半
  • 学歴:中堅私立大学 社会科学系学部卒
    • 中学受験経験無し、小中高までは公立
  • プログラミング経験:一切無し
    • 普段から業務でExcelは触るが、VBAを触るほどではない
  • 数学力:
    • 数学2Bまでは最低限の学習経験はあるが、その知識の大部分は失われている
    • センター試験で1Aが9割、2Bが7割、当時の記述模試偏差値は60程度
    • 昔も今も「整数」「場合の数」「漸化式」の単元が苦手
  • 職業:ドキュメント制作ディレクター
    • 書籍・社内技術資料等の制作進行管理
    • 日英での技術文書の執筆
    • 多言語翻訳のコーディネーション

プログラミング学習の動機

仕事上の雑務を自動化させ、少しでも仕事から解放されたいという、人類普遍の欲求によるものです。また、エンジニアへ転職できる可能性が自分にあるのかを確かめてみたいという側面もありました。

言語

Pythonを選択しました。
Pythonを選んだ理由は特にありません。よく聞く言語名だったので選んだ、という程度です。

学習量

  • ユニークAC数:入茶まで150AC、入緑まで450AC程度
  • 学習時間:約9ヶ月間で900時間程度(競プロに限らずプログラミング学習全体での累計)

学習方針

  • 自分のレートに近いdifficultyの問題を解く
  • 解答結果を「簡単に解けた」「苦戦したけど解けた」「解けなかった」の3パターンに分けて記録しておく
  • しばらく日数をおいて再度「苦戦した問題」と「解けなかった問題」を解き直す
  • 上記のサイクルを繰り返しつつ、新規アルゴリズムの修得も徐々に進める

入緑した現在、できること・できないこと

できること

  • 全探索
  • bit全探索
  • 順列全探索
  • 累積和、いもす法(二次元累積和になると怪しい)
  • 二分探索(他のアルゴリズムと組み合わさると怪しい)
  • 両端キュー
  • 優先度付きキュー(コンテスト本番で使ったことはまだない)
  • その他細かいテクニック(座標圧縮、しゃくとり法、計算誤差をなくす方法など)

苦手なこと

  • DP・メモ化再帰
    • 現時点ではFrog問題や典型的なナップサック問題など、極めて簡単な問題しか解けない
  • 高校数学全般
    • 三角関数:解けなくはないが、教科書を見ながら解く必要があり、実装に時間がかかる(例.ABC144D - Water BottleのACに1時間弱かかる)
    • 整数:GCD・LCM・n進法に関する問題だと灰diffでも解けないことがある
    • 場合の数:ABC178C - Ubiquityのような問題が苦手中の苦手(一応今なら解ける)
    • 漸化式:高校生時代から苦手中の苦手で、DP・再帰関数の理解が進まない原因となっている

これから覚えたいこと

  • グラフアルゴリズム全般
    • BFS、DFS、Union-Find、ダイクストラ法、ワーシャルフロイド法など
  • 初等整数論全般
    • 剰余系と合同式、中国剰余定理、拡張ユークリッドの互除法、フェルマーの小定理など

入緑戦略について

正直緑コーダーになるために必要な知識などは、ネットや書籍でいくらでも紹介されていますし、そもそも読者の皆さんの方が勉強は得意だと思います。
なので、ここでは個人的な性質と、それを踏まえた戦略について記そうと思います。

30代社会人という前提を考慮する

社会人の場合、学生と比べて割ける時間的リソースに限りがあり、量によって質もカバーするといったパワープレイは戦略的に取りにくいことが多いです。
また、20歳前後の頃に比べると記憶力の衰えが始まっており、「沢山覚える」ことが難しくなります。

狙い球を絞る

時間と記憶力の制限があることを踏まえて、狙い球を絞るようにしました。
具体的に言うと、全てを網羅することは諦めて、修得が容易なアルゴリズム・データ構造から順番にキッチリ潰す戦略を取りました。特にDP、グラフ、初等整数論に関する内容は、ちょっと触ってみたところ、これはすぐには身につかないなと思い、後回しにしました。
正直DPやグラフを捨てるのは賢明とは言えません(後述)が、幅広くやろうとするとどれも身につかないという現象が起こりがちです。割り切ることも戦略の一つとしてアリかなと思います。

パフォーマンスが最大化するよう行動する

新しいアルゴリズムや考え方を修得する「学習」と、覚えたアルゴリズムや考え方をノータイムで実装できるようになるための「練習」、その両側面を適宜バランスを取りながら取り組むようにしていました。「n問速解き」と「n+1問遅解き」の両方を狙っていく感じです。
その上で、2021年に入ってからのABCでは、D問題以上が明らかに難化している傾向がありました[1]。特にここ最近はD問題に青diffが置かれることも増えましたが、青diffとなると、ちょっとやそっとの「学習」では太刀打ちできません。
このような状況を踏まえて、ここ1~2ヶ月は多少「学習」の比率を下げて「練習」の方にリソースを割くようにもしました。D問題を解くための努力に費やす時間を全体の30%ほどに落とし、C問題までの3問を速く解くための努力に全体の70%を割くようなイメージです。具体的には新規アルゴリズムの学習スピードを落として、灰茶diffと得意なアルゴリズムの緑diffに絞って練習を繰り返しました[2]

費用対効果の高い問題から先に消化する

なるべく教育的価値の高い(=汎用性のある)問題から先に潰すことを心がけていました。私の場合、以下の4つのセット以外の問題はほとんど解いていません。

  • 競プロ典型90問
    突如競プロ界に彗星の如く現れた最強コンテンツと言えそうです。今から競プロを始めるのなら、初手は「競プロ典型90問埋め」になると思います。
  • 分野別 初中級者が解くべき過去問精選 100 問
    こちらも良問揃い(っぽい)ですが、「競プロ典型90問」が完全に上位互換になりつつあるので、演習量を確保したい人向けになるかと思います。
  • Boot camp for Beginners
    網羅系と言えそうです。ただ、どこを目標に設定するかにもよると思いますが、仮に入緑や入水をターゲットとするなら、飛ばしてもいい問題も結構多く収録されている印象があります。特に、AGCのような天啓要素を多分に含む問題は、割り切ってスキップするのもアリだと思います。
  • 直近1年以内のABCで出題された問題
    なんだかんだ本番で出た問題を解くことは一番大事だと思います。これは私の感覚によるもので、上手く言語化できないのですが、「競プロ典型90問」も「Boot camp for Beginners」に収録されている過去問も、2021年のABC基準で言うと「きれいな問題」が多い印象です。問いを素直に答えるとACできる問題が多いように思います。一方、2021年現在のABCはもう少し「意地悪な問題」が出題される傾向がある気がしています。本質的な問いに加えて副テーマが潜んでいるイメージです。そういった問題を普段から解いておかないと、本番で「方針は合っていたのに一部テストケースでWAが消えない」なんてことが起こりがちです。

入緑までの流れ

時系列ごとに1ヶ月単位で振り返ってみます。
本項は、プログラミング初心者の苦闘を見てみたい奇特な人向けの内容になります。

やったことまとめ

本項はかなり長くなってしまったので、はじめにざっくりやったことをまとめました。
この9ヶ月で行ったことは概ね以下の3つになります。

  • 20年10~12月:Pythonの基本的な文法を学ぶ
  • 21年1~2月:灰茶diffを200問ほど解いて実装に慣れる
  • 21年4~6月:簡単なアルゴリズムとデータ構造を学ぶ、茶緑diffを200問ほど解く

20年10月:プログラミング開始

入門書を読みつつ、PyQというオンラインサービスで学習を進めました。
初めてのプログラミングだったので、当初は簡単な文法を理解することも四苦八苦しました。

■ 取り組んだこと: 初歩的な文法の学習

  • print("Hello World!")
  • 各種演算子
  • 基本的なデータ型(str, int, float)
  • コンテナ(list, tuple, dict, set)
  • 基本的な組み込み関数やメソッド
  • ファイルの読み書き(read, write)
  • 日時計算(datetimeモジュール)
  • 関数の作成と利用(def文)
  • 条件分岐(if文、およびelif、else)
  • ループ(for文、while文、およびcontinue、break)
  • 例外処理(try, except)

■ レート状況:黒色(未参加)

このころはまだAtCoderの存在は知りませんでした。

20年11月~12月:競プロ初参加

知り合いからAtCoderの存在を教わりました。
この頃はまだコンテストに参加するだけで、特に競プロに対して対策もしていませんでした。

■ 取り組んだこと:中級程度の文法の学習

  • 内包表記
  • 関数の仮引数
  • デコレーター
  • 各種モジュールとその関数
  • リンター・フォーマッターの概念
  • オブジェクト指向

■ レート状況:黒色→灰色中盤(rate: 0 to 152)

最初期にABC184C - Super RyumaをACして緑パフォを出したこともありましたが、それ以外の回では全て2完灰パフォでした。文法の理解もまだ浅く、入門書を片手にコードを書いていたので、ACまでの時間も相当かかっていました。

https://atcoder.jp/contests/abc184/tasks/abc184_c

20年1月:ひたすらコーディング練習

年末年始から本格的に競プロの過去問を解き始めました。
当時はまだコーディングに不慣れだったので、簡単な問題をたくさん解いてコーディングに慣れることが目的でした。
あくまでプログラミングの上達が主目的で、ついでにレートもちょっと上がったらいいかな、ぐらいの気持ちでした。

■ 取り組んだこと:過去問をたくさん解く

AtCoder ProblemsのBoot camp for BeginnersのEasy100問を解きました。
前から数えて65問目辺りまでは問題文をそのまま実装すれば解ける事が多いので、実装の練習に最適でした。66問目以降は計算量の側面で多少工夫が必要となります。
この頃に問題を解きながら学んだことは以下の通りです。

  • 入力の受け取り方:
    適当にqiitaの記事などを見て勉強しました。以下の記事が分かりやすかったです。

https://qiita.com/KoyanagiHitoshi/items/3286fbc65d56dd67737c
  • 基本的な実装スキル:
    それまでに得た文法の知識を使って実際にコードを書くことで、コードを書くことに慣れることができました。
  • 計算量の概念:
    ランダウの記号による計算量の表現方法を知りました。色々な記事を読み漁りつつ自分なりに実験する中で、どのくらいの計算量なら通るのかどうかを学びました。
  • 便利なモジュールの使い方:
    主に以下の3つをよく使うようになりました。
    • itertools:combinations, permutations, product, accumulate
    • math:sqrt, log, comb, perm, factorial, floor, ceil, gcd
    • collections.Counter
  • その他基本的なテクニックや知識:
    • 最大値・最小値を求める時は、変数の初期値を考えられる解よりも小さく/大きく設定して、徐々に更新させる
    • コーナーケースに気をつける(制約の下端・上端は例外的な処理が必要なことがある)
    • 浮動小数点数で計算すると誤差が出ることがあるので、なるべく整数でデータを扱う
    • 切り上げ除算は、「分母の値-1」を分子に足して切り捨て除算するのと等価(整数の範囲では)
    • Pythonでは通らなくてもPyPyで通ることがある(計算量が10^6回辺りからPythonは通らなくなるが、PyPyなら10^7回でも通る、ただし再帰関数など一部機能はPythonの方が速い)
    • "x in y"をするときに、yがlist型だと遅く、set型だと速い(*当時の理解はこの程度、後々厳密に学ぶ)

■ レート状況:灰色中盤→灰色後半(rate: 152 to 328)

1月に入ってからは、ABCでは最低でも茶パフォを維持するようになりました。ある回を除いては・・・。(後述)

20年2月:入茶/そして競プロ沼へ…

約1ヶ月間の訓練を経て、10行程度のコーディングは大分スムーズにできるようになりました。
競プロに期待していたものは十分得られたので、ここで競プロをやめることも考えたのですが、問題が解けると楽しいんですよね。つまるところ、ちょっと競プロにハマってしまいました。

■ 取り組んだこと:引き続き過去問をたくさん解く

Boot camp for BeginnersのMedium100問を解きました。
EasyからMediumに掲載されている問題は、まだ仰々しいアルゴリズムやデータ構造の知識がなくても解ける問題が多いです。
ただ、AGC-Aは見かけのdiffに対してかなり難しく、その中でもAGC031以降は一際難しいです。数学(特に整数と場合の数)やパズルのセンスが無いと解くのは難しいと思います。AGCの問題は私も数問解き残しています。

■ レート状況:灰色後半→茶色中盤(rate: 328 to 603)

コンテスト初参加から11回目で入茶しました。
2月は調子がよく、全てのコンテストで緑パフォを出し、茶色中盤までレートを伸ばしました。今思えば、ここで適正レートよりも高い数値が出てしまったことで、自身への期待値が高くなりすぎてしまった気がします。

20年3月:小休止

所要で忙しく、コンテストに出ること以外はほぼ競プロに時間が割けませんでした。

■ レート状況:茶色中盤で停滞(rate: 603 to 670)

若干微増した程度です。この期間に初めてレートの減少を経験しました。
特にARC114で0完となり、レート-43という大寒波に見舞われたときは、かなり落ち込みました。

20年4月:アルゴリズムを学び始める

Boot camp for BeginnersのHardを解き始めたところ、序盤からほとんど解くことができませんでした。ここから先はアルゴリズムの知識がないと手が出ないことを痛感しました。ここで一旦、演習中心の学習スタイルから、インプット中心の学習スタイルに切り替えました。

■ 取り組んだこと:記事・書籍の通読

E869120さんやけんちょんさんの記事や書籍を読みながら、簡単なアルゴリズムから順に学習を進めました。

https://www.kspub.co.jp/book/detail/5128442.html
具体的には以下のアルゴリズムを学びました。
  • 全探索
  • bit全探索
  • 順列全探索
  • 二分探索
  • 累積和

各種単元ごとの記事を読んだ後は、以下で紹介されている問題を単元ごとに解きました。

https://qiita.com/e869120/items/eb50fdaece12be418faa#2-3-分野別初中級者が解くべき過去問精選-100-問

実際のところ、コンテスト本番やBoot camp for BeginnersのMediumの終盤では上記アルゴリズムを問う問題は出ていましたが、なんとなくその場その場で自分で考えて思いついた方法で乗り切っていました。ですが、知識が体系的に纏まっていないまま即興で対処していたので、閃けずに解けないことや、閃くまでに時間がかかることもしばしばでした。一旦立ち止まって基本事項を体系的に学び直すことで、問題をパターンで認識できるようになることが狙いでした。
また、上記に加えて

  • 再帰関数とメモ化再帰
  • 動的計画法

の学習も始めました。ですが、こちらは全く修得が進みませんでした。再帰関数は動作の流れを追いにくく、直感的に理解することが難しかったです。おそらく漸化式的に考える能力が必要そうですが、高校数学の中でも一際苦手な単元だっただけに、修得には時間がかかりそうだと思いました。

■ レート状況:茶色後半で停滞(rate: 670 to 697)

完全に停滞期に入りました。解けそうな問題を落としたり、ACまでに時間がかかったりして、ちょっと陰鬱な気持ちになりました。この2ヶ月で大幅に演習量が減ってしまったのが失速の原因だと思われます。
なおこれは競プロに限らずあらゆることに共通すると思うのですが、インプット中心の学習になると、それがモノになるまでの間は一旦停滞することが多い気がします。対象を言語化することで理解の深度は上がりますが、対象に対して意識的であるがゆえに瞬発力に欠ける状態に陥る、という感じです。
こういった停滞期はおおよそ誰に対しても訪れるもので、ここで大事なのはモチベーションを切らさないことだと思います。まさに我慢の時期でした。

20年5月:演習量を再び増やす

前述の通り、解けそうな問題で躓くようになったのは演習量が減ったことに原因があるように思いました。
また、ここ最近のコンテストはD問題が水~青diffで大きな崖になりがちで、C問題までをいかに速く解くかで勝敗が決する傾向がありました。
上記を踏まえて、簡単な問題を素早く解くトレーニングが必要だと考えました。

■ 取り組んだこと1:灰茶diffを解き直す

今まで解いてきた灰~茶diff問題の中から少しでも詰まった問題を集めて100問程度解き直しました。これで大分地力が固まりました。

■ 取り組んだこと2:初見緑diffを解く

Boot camp for BeginnersのHardの前半半分を進めました。普通の全探索、bit全探索、累積和、整数問題が多かったです。また、座標圧縮、しゃくとり法、エラトステネスの篩などの知識を要する問題も含まれており、その辺りのテクニックも学びました。
未修のアルゴリズムとデータ構造(DP、グラフ、木、DFS、BFS、ダイクストラ法、ワーシャルフロイド法)を問う問題とAGCの問題はスキップしたので、解いたのは40問程度です。

■ 取り組んだこと3:データ構造を学ぶ

再帰関数およびDPのコーディングがいつまで経っても身につかないので、もう少し修得コストがかからなそうなデータ構造を先に学ぶことにしました。具体的には以下を学びました。

  • 配列・ハッシュテーブル
    list, dict, set自体は今までも使っていましたが、それぞれのデータ構造に用意されている各種処理にかかる計算量を厳密に学びました。
  • 両端キュー(deque)
  • 優先度付きキュー(heapq)

■ レート状況:あと一歩で入緑(rate: 697 to 795)

コツコツ緑パフォを出し続け、入緑まであと一歩のところまで来ました。

20年6月~7月頭:心が折れかける/入緑

ABC204で大事故に見舞われました。今までの戦略で切り捨ててきたものが一挙に襲いかかってきたような感じでした。
C問題に未履修のグラフアルゴリズムを問う問題が出て、D問題も苦手なDP問題で、その上A問題で手が滑って1WAを出してしまい、結果的に2完遅解きで灰パフォ、レート-41の大惨事でした。あと一歩で入緑するタイミングで、ABCに限れば半年ぶりの灰パフォが出たことで、流石に心が折れかけました。
その次のABC205でも茶パフォを出してしまいレート-16となり、一気に700台半ばまでレートが落ちてしまいました。「ああっこれはもう入緑するのは無理かも・・・」という気持ちになりました。
ここで競プロを辞めてもおかしくはなかったです。ただ、負けたのは知識に穴がある自分が原因だし、そこを一歩一歩埋めていくしか無いなぁ、と途中で気持ちを切り替えました。それまで取ってきた3完速解きにリソースを割く戦略を一旦見直して、DPとグラフを少しずつ学ぼうと決意しました。

■ 取り組んだこと:再帰関数とDPの理解に努める

今まで何度も挫折してきた再帰関数を本気で理解しようと努めました。
結局未だにあまり理解できていないのですが、以前だったら全く解けなかったDP問題も、ごく簡単なものなら解けるようになりました。(EDPCのE問題ぐらいまでは解けるようになった)

■ レート状況:V字回復で入緑(rate: 795 to 738 to 810)

ABC206からまたコツコツ緑パフォを出し続け、ABC208でなんとか入緑しました。
結局、DPによって雌雄が決するような回はなかったのですが、メンタル面が多少改善されたことが大きかったように思います。
ただ、やはりまだまだ穴だらけなので、しばらくは茶色と緑色を行ったり来たりする気がします。長期的目線でレートを上げるべく、じっくり穴を埋める作業を続けていきたいと思います。

今後について

一旦競プロに割くリソースを減らす

次の目標はやはり入水、と言いたいところですが、より包括的な意味でのプログラミングスキルの上達、およびIT知識の修得を優先させたいと思います。なので、今後はその主目的を達成するために自らのリソースの配分を見直しを図りたいと思います。ここで競プロのレート向上に行動を最適化させるのは一旦やめにしようと思っています。

IT知識の基本を押さえる

直近の一番の目標は基本情報技術者試験の合格です。
本当は今年の3月に受験する予定だったのですが、諸事情で受験することができなかったので、改めて合格目指して頑張りたいと思っています。
加えて、IT業務で使用される一般的なツール群や、業務自動化の手法、スクレイピング技術など、個人的なテーマに沿って学習を進めていく予定です。現状はGitHubすら使えていないので、今後は使いこなしていきたいです。
あと、Python以外の言語の勉強もしたいです。実用面(Windowsアプリ制作)でC#、機械学習周りでJulia、関数型言語としてHaskell、総合的にRust、の4言語が気になっています。

今後の競プロとの関わり方と残されたタスク

とはいえ、プログラミング一般論と競技プログラミングのそれぞれがカバーする範囲は、相互排他的ではなく、共通部分も多分にあると思っています。加えて私自身、競プロを「面白い」と感じているので、今後もコンテストに継続的に参加はしていきたいと思っています。
また、現状のレートはとてもキリがいいのですが、直近で見えていたタスクを全てはやり切れていません。それらをやり切ったときにどの程度レートを伸ばせるのかというのも気になるところです。

知識面

  • 「問題解決力を鍛える!アルゴリズムとデータ構造」を完読する
    • グラフと木に関する章以降が未読状態なので、そこを読み、理解する
  • 「マスター・オブ・整数」を完読する

演習面

上記に残された問題は、少しずつ進めていこうと思います。参加者の平均レベルが上昇している昨今、レートを上げるのは以前よりも難しくなってきてはいますが、それでも上記の残タスクをやり切れれば入水できるような気がしています。ただ、少なくともあと1年は掛かりそうですね。

競技プログラミングに対する所感

以下はポエムです。

学習方針とその結果を振り返る

知識の修得と演習のバランスを取りながら進められたと思います。
あくまで個人の見解ですが、私の学習の進め方自体に大きな誤りはなく、それなりに王道に近しい道を歩けたのではないかなと思います。
対して、「自分の年齢±5」「コンテスト参加回数±5」でアクティブユーザーをソートしたときのレート中央値はちょうど800程度でした。つまり、私の結果はまさに可もなく不可もない平凡なものと言えそうです。学習方針はそこまで間違っておらず、投入した時間も同世代の人々に比べたら少なくはない。それで中央値というのは中々ショックではありますが、その一方で、それだけ高いレベルの参加者が集うコミュニティに参加できることが嬉しくもありました。

競技プログラミング界隈の特異性について

もう10年も前のことですが、同じようにスコアを競うTOEICでは、比較的容易に800点台後半を出すことができました。このスコアはおおよそ参加者の上位5%程度だそうです。もちろん、英語とプログラミングとでは求められる能力に違いはあるとは思います。ですが、ある種の知的能力をスコアに変換して競うという部分では、両者は比較的似ているようにも思います。
個人的には、TOEICのスコア分布が世間一般の知的能力の分布に近いと思っています。もちろんこれは、公立の小中高に通い、普通の大学に通い、普通の会社に務めてきた私の世界観の中ではそう感じる、というだけの話ではあります。
一方、AtCoderは、中高一貫の超進学校からの東大京大に進学したような知的エリートたちが数多く参加しており、またそれに準ずる学力の方も数多く参加されています。今までは、そういった知的エリートの人々だけで構成されているコミュニティは、一部の大学や会社の中で「閉じて」おり、私のような一般人には認識できないものでした。それが競技プログラミングという媒体を通じて観測できるようになり、興味本位で覗いてみたらあまりのレベルの高さにビックリした、という話です。実際、緑コーダー以上の方なら、おそらくその大半がさして苦もなくTOEICで900点台を出すと思います。
さすがに私もある程度年齢を重ねたので、自分の能力に上限があること、上には上がいることを自覚しています。故に、こういった結果になっても「まあそうか」の一言で片付けられてしまいます(向上心の欠如とも言えます)。ですがまだ若い人が競プロを介して傷ついてしまうのも無理はないだろうなぁとも思います。私自身、レートが700台になってからは平常心を失いがちでしたので、競プロで傷つく人々の気持ちもとてもよく分かります。ですが、自分を含めてそういった方々を見るに、他者と競うのではなく、自分と競うこと、また競技そのものを楽しむこと、ができるようになれるといいなと思います。とはいえレートや色が就職などのプラクティカルな要素とも絡んでいるがゆえに、純粋に楽しむというのも難しいのかもしれませんね。中々難しい問題です。

謝辞

手段の一つとして認識していた競プロでしたが、その面白さに想定外にハマってしまいました。
競プロコミュニティは比較的善意で成り立っている部分も大きいと見受けられます。そのコミュニティの維持に貢献されている方々には尊敬と感謝の念でいっぱいです。基礎的なコーディング能力やアルゴリズムの知識を、楽しみながら身につけることが出来る機会を提供して頂いているAtCoder社、ならびに競プロコミュニティを支える活動に日々尽力されている有志の方々全員に、感謝申し上げます。

おわりに(宣伝)

最後に一点宣伝です。
現在、転職を検討しています。入緑することができれば、ITエンジニアとして辛うじてやっていけるポテンシャルを示せるのではないかと思い、本日まで競プロをやってきた部分も僅かながらあります。今回、目標を達成したことで、ITエンジニアを目指してもいいのかな、という気持ちになりました。
とはいえ、私はあまりエンジニア界隈のことを知らず、業界にどんな職務があるのか、求められるスキルがなんなのか、転職の方法はどういったものがあるのか等、諸々わからないことづくしです。ですが、情報を得るにしても、今のエンジニア転職界隈は情報が玉石混交過ぎて、何が正しいのかよくわからない状況です。
やはり、リアルな情報はその道で実際に働いている方から得るのが一番だと思いますが、私にはそのようなツテがなく、相談できる人を探しています。万一、相談に乗ってもいいと思える方がいらっしゃったら、ご連絡いただけないでしょうか。今すぐになにか返せるというのもないので、善意に頼る形になってしまうのですが、もしよければご連絡頂けることをお待ちしております。

脚注
  1. ABC級コンテストのdiff比較
    ABC167~ABC186の全24回の平均diff(2020/5/10から2020/12/19までの回)
    11-77-422-900-1434-2051
    ABC187~ABC208の全24回の平均diff(2021/1/2から2021/7/4までの回)
    11-72-373-1147-1625-2209
    D問題は247ポイント、E問題は191ポイント、F問題は151ポイント増加しています。 ↩︎

  2. ただ、このような出題傾向がいつまで続くかは未知数ですし、なんだかんだD問題に「知らないと解けない」タイプの緑~水diffの問題が置かれることもあるので、「3完速解きにリソース集中」戦略だと緑中盤辺りで伸び悩みそうではあります。 ↩︎