先日、沼りながらも AtCoder 用の環境を VScode 上に構築することに成功した。
これ以降様々な AtCoder の問題を解いて精進していこうと考えているわけだが、その過程で解いた問題に対する自分なりの考察をこのブログにまとめていこうと思う。
これは受験勉強していて思ったことなのだが、
「問題を解く」
↓
「解答・解説を読む」
↓
「なるほど、ふーん。こういう考え方が必要なのね」
↓
「よし、次の問題行こう」
この流れは、解いた問題の考え方を理解したつもりになっているだけであって本質的な理解にはつながっておらず、時間が経ってから振り返ると解法を忘れてしまっているケースがほとんどだ (n敗) 。
一方、難問に対して友人たちと議論しながら解いたものは頭の中に印象強く残っており、類題に対してもその考え方をうまく利用して対応できることがあった。
近年、日本の教育でも生徒がグループで話し合いながら課題に取り組む「アクティブラーニング」というものが取り入れられているそうだが、ただ知識をインプットしていくだけではなく、誰かに教えたり、客観的にも分かるように文章に書き起こしてみたりするというようなアウトプットも行っていくことで、より深い理解を得られることは経験上間違いない。
ということで、 AtCoder コンテストの解説ページにあるような各問題に対する解説を、「なぜこのアルゴリズムを採用するに至ったのか」「計算量削減のポイントは何なのか」など、自分なりの考察を交えながら茶コーダー目線で書いていこうと思う。
とはいえ、自分が解けない問題を解説するのは不可能なので、当面は灰~茶Diffの問題を中心に書いていくことになるだろう。ある程度のストックも確保したいので、投稿ペースはひとまず1日に1問題ずつの予定だ。ただし、別の話題がある場合はそちらを優先することにする。自分と同じように茶色コーダーの人が読んで納得できるような内容にするつもりなので、機会があれば読んでいただきたい。
それではまた。