最近はC++の基礎から勉強して、APG4bを最初からじっくり解いている。
自分なりにNotionに整理しながら、サンプルコードを写すだけでなく自分なりにそらで書いてみたり、ちょっと変えてみて試している。
今はA問題を解いているのだが過去に勉強していた時に比べて理解度が全然違う。完全にコントロールの支配下に置いている感じがして自信もついてきた。
前まではいきなりAtCoderのA問題を解きまくって、次にB問題を解いて、分からなかったら解説を読んで理解して、また解いて、次にC問題にチャレンジというやり方をとっていた。アルゴリズムの理解だけでなく、Goの文法に慣れるという目的もあって、Goで解いていた。
これは学習のアプローチとして間違っていた。アルゴリズムの勉強だけでなく、Goの文法の学習という2つのことを同時にやろうとしていたのが効率を悪くしていた。そして何より、データ構造とアルゴリズムの理論の勉強を全くせずに問題を解こうとしていた。
データ構造とアルゴリズムの理解がふわっとしている or 全くわかっていない 状態で問題に臨むと、自分の中で問題解決のための道具がないので、行き詰まり、場当たり的なアプローチをとってしまっていた。これが学習効率を下げていた。
ちゃんと基礎の理解をじっくり時間をかけてやることにした。これが功を奏したのか問題を見た時にパッと解法が思いつくようになりつつあり、問題解決が早くなってきた。
今はAPG4bでC++の学習をしているが終わったら、いきなり問題を解くだけでなく、データ構造とアルゴリズムの理論の勉強も並行してやろうと思う。
ここで自分が言いたいのは、我流で勉強したり、理解したと思ってどんどん進まずに、まず最初にやることは基礎と向き合うことが、自分が辿り着きたい場所に行く一番の近道だということだ。
よくないやり方を経て学んだ教訓👊