AtCoder 入茶記念として勉強法を改める

!注意!

これはよわよわコーダーの独り言です。

この記事を読むより効果があるものを紹介します。

以下のものを見たらこの記事は読む価値がないものだとわかりますので……

(気付いたら AKITO 氏しか貼っていないけど、勉強系だったらこの御方がダントツに信用できるので……)

 

 

www.youtube.com

 

www.youtube.com

 

www.youtube.com

 

 

※追記でこちらも貼らさせて頂きます

 

 

 

 

 

・やっていたこと

1.写経

2.問題解きまくる

3.アルゴリズム習得

4.復習

 

 

 

・やらなかったこと

5.バチャコン

 

 

・おまけ

6.音楽を聴きながら作業することについて

7.今後について

 

 

 

 

・意識したこと、注意するべきことについて

 

 

覚えるべきことは覚えて、理解することは徹底的に理解する、という二点だけ。

あとはその質を維持したまま物量を熟す。何れ少しずつ質を上げることができるようになるため、なるべく質は上げつつ下げないことを意識する。

 

これは……勉強の基本的なことではないだろうか?

裏技なんてものは存在しなかったんだ……

残念ながら、我々は当たり前のことを当たり前にやっていくしかない。それもじっくりと時間を掛けて、じっくり苦しむ必要がある。

 

 

 

・1の写経について

 

 

これはあまりやる必要がなかったかもしれない。コードを丸々書いたからと言って理解できることが少なかったから

ただ、初歩的なアルゴリズム習得時には役立ったと思う

例えば BFS とかは最初のうちはどう書けばいいのかわからなかったので、何度も写経し、覚えては今度はそのコードを思い出しながら書き、忘れるのでまた写経したり覚えなおす。

何回か書いていくうちに自然と覚えていき、その問題だけでも一時的に解けるようになっていく。

そこから違う BFS の問題を解こうとすると、多分解けないんだけど「こういう風に実装すればいいのか!」とか色んなことを吸収できる。

 

そうして何度も何度も違う問題を解いていく際にまた BFS の問題が来ると

 

1.「どう考えればよいのか」

2.「求めたいのはこれ」

3.「こういうのができたら嬉しいな」

4.「全探索したいけど、どう探索すればいいか」

5.「ひとつひとつ見ていけば良さそうだ」

6.「BFS で解けそうだな」

 

というプロセスが生まれ、やっと初めて BFS を実装できる。

ここまで考え抜くことで差が生まれるんだと思う。

今までやってきたことは単なる "問題集を虱潰す" だけであって、実践では "考え抜いて実装する力" が求められる。

ぼく自身は大した勉強もしたつもりもなく、アルゴリズム力もその知識も皆無なのだが、このお陰で何とか ARC 137 を A,B 2 完できたんだと思う。

 

 

 

・2の問題を解きまくるについて

 

 

所謂 "精進" ってヤツ。かんたんに、凡人だと思う人程、よわいと思っている人程、常日頃から問題に触れていないとそりゃ伸びないよねって話。

問題を沢山捌くことで、要求される知識や実装をアウトプットできるので、問題を沢山解きまくることはいいことだと思う。

ただ、上にも記載させて頂いたが、あくまでこれは "質を維持したまま問題を解きまくる" ということを示唆しているので、A 問題を沢山解く!というよりかは C を安定させるために沢山解く!とか、D を解けるようになるために解いてみる!ということである。

残念ながら、当たり前といえば当たり前ですね……

 


▼ C 問題を沢山解いた結果の図

f:id:volcano-tofu:20220320110312p:plain

 

 

 

・3のアルゴリズム習得について

 

 

必須。覚えるべきもの。なので覚える。

DP とかは最近の C でも頻繁に出題されるし、汎用性が高いので入茶する人は覚えるべきものなんだろうなぁと思う。

覚えておいて損はないのだが、その問題しか解けないレベルの理解力や実装力は論外なので、沢山の問題に触れるべき。

問題集でアルゴリズム習得を促し、実践で「こういうのを実装したい」「あのアルゴリズムを使えばいけそうだ」という流れを作れるまで理解し、実装力を高めよう。

 

 

 

・4の復習について

 

 

どうして復習をするのか。についてはどうしても忘れてしまうからとしか言いようがない。

理解できていない部分、見えなかった部分が見えるようになるかもしれないので、なるべく復習はしておくとよい。

当たり前だと思ったかもしれないが、情弱狩りや全く勉強しない人向けの動画とかでもよく言われていることである。

それはつまり……?何を意味しているのか。

 

 

 

・5のバチャコンについて

 

 

これはやった方がよかったかもしれない。

AtCoder は土日にしかコンテストが開かれないので、ABC しか出ない人はほぼほぼ週1しか実践日がない。

しかしこれだと "週に 1 回しか超苦しんで実装をする日" しかなく、初心者の人であるほど週一は効果が薄すぎると思う。

とにかく緑までは物量が大事だと思うので、最低でも週2で バチャコン+ABC をした方がいい。

問題を沢山解くのが悪い事ではないが、適度に、適切に実践を挟んだ方がいいのは間違いない。

最近伸び悩んでいるのでバチャコンを挟んでみようと思う。

 

 

 

・6の音楽を聴きながら作業することについて

 

 

ぼく自身はあまり集中できなかったので聴いていない。

音楽を聴きながら作業することが多かったのだが、ABC は思考力も実装力も求められるレベルがとにかく高いので、音楽を聴くと集中力が下がってむしろ逆効果が多かった。

ASMR はよく聴く方なのだが、その ASMR の音すらも集中を妨げてしまう程。

 

なので集中できる人は聴けばいいしぼくみたいに集中できない人は聴かなければいい。

一応、以下の動画は集中力を妨げることはなく、むしろ高めてくれるから音楽を聴きたいけど聴けない!という人は試してみては如何だろう。

 

 

www.youtube.com

 

www.youtube.com

 

※休憩あり

www.youtube.com[

 

 

 

・7の今後について

 

 

現時点で目指しているのは緑で、できれば青に行きたいなーなんて思っている。

「D 問題 100 題ちょっと解けば緑行けるっしょ!w」と生意気ぶってるので、今は D を沢山解く方針に変えていこうと思う。

あと、茶色になったのは C を 100 題ちょっと解いたのも結構大きいと思う。

 

 

物量を熟すのは正義!w(ただし質を維持した上である)

 

 

以上。