なぜ競プロをサボるようになったのか?
自己紹介
皆さん、はじめまして!
Harry です。今回、競プロ Advent Calender 2021に参加させていただいたので、初めての記事を書かせていただきました!
私は1年ほど前に初めて競技プログラミング(以下競プロ)を始めました。そして、途中やっていなかった時期があり、本格的に始めたのが半年ほど前になります。現在(12/12)のAtCoder(競技プログラミングサイト)のRatingは191のバリバリの初心者です。使用している言語は、Pythonです。
何を書けばいいか悩んだ結果、初めての記事ということで、 AtCoder を始めたきっかけと、今までやってきたこと、そしてサボるようになってしまった原因について簡単に書きたいと思います。
なぜ競プロを始めたのか
私が競プロを始めたのは、友人から誘われたことがきっかけです。私の友人がAtCoder という競技プログラミングサイトをやっていたのは、時々耳にしていたのですが、ある日「一緒にやってみない?」と誘われました。私は高校の頃、情報処理科という学科に所属していたこともあり、プログラミングに苦手意識とかはなかったので、そこで初めて AtCoder でコンテストに出場しました。これが、私が競プロを始めたきっかけです。
今までやってきたこと
私が今まで主にやってきたことは下記の2つです。
- AtCoder Problems で過去の問題を解く
- なるべく毎週のコンテストに参加する
AtCoder Problemsで過去の問題を解く
私が競プロを始めてから主にやってきたことは、 AtCoder Problems というサイトを活用し、過去の AtCoder のコンテストで出題された問題を解くことです。
しかし、始めたばかりの私は過去問題のどの問題から解いていいのか分かりませんでした。そんな私のために @ryusuke__h さんが毎日 AtCoder Problems の Virtual Contests(以下バチャ)を開催してくれました。バチャ では毎回多くの人が参加してくださり、私も他の参加者に負けないように精一杯努力していました。
なるべく毎週のコンテストに参加する
AtCoder では、定期的にコンテストが開催されており初心者の私は、AtCoder Beginners Contest というコンテストに参加していました。そこでは、日々の精進の成果を出すことができ、レートも上がるので毎週の楽しみのひとつでした。
競プロをやっていて楽しかったこと
私が競プロをやっていて楽しかったことは以下の2つです。
- レーティング制度
- 頭を捻る問題を解くこと
レーティング制度
AtCoder には、レーティング制度があります。最近のゲームには、ランク制度やレーティング制度があるものが多く、私自身その制度がとても好きでした。なので、毎回コンテストに参加するときは、とても緊張していました。
頭を捻る問題を解くこと
普段の生活ではあまり頭を捻る(思考する)機会がないので、競プロはその機会として適していて、とても面白かったです。解けなかった問題でも、解説を見て「そんな考え方があったんだ!」と、いつも驚かされていました。
サボるようになった原因
これまでの内容を見ると、競プロを楽しんでいるように見え、サボるようになった理由が見当たらないと思います。私が、競プロをサボるようになったのは主にモチベーションの低下が原因です。そして、モチベーションの低下の原因となったとは以下の3つだと思います。
- 数学問題
- アルゴリズム
- 毎日の精進
数学問題
まず、サボるようになった原因の1つは数学問題が解けないことにあります。私は、高校で数学Ⅰと数学Ⅱの途中までしか履修しておらず、一般人よりも数学の知識はありませんでした。そのため、度々出題される数学問題を解くことが出来ず頭を悩ませていました。ちなみに、私は大学の必修科目である解析学を2回も落とし、今年3回目の履修をしています...。
アルゴリズム
2つ目の原因は、アルゴリズムです。プログラミングにはたくさんのアルゴリズムがあり、それを覚えなければ AtCoder のコンテストの問題を解くことができない場合が多くあります。なので、アルゴリズムを使えるようになることは必須でした。しかし、私自身がアルゴリズムに対して、あまり面白さを感じませんでした。また、ひとつのアルゴリズムを使えるようになるには、たくさん問題を解き練習をする必要があります。さらに、その成果はとても分かりずらいように感じました。私は、その地道な努力がとても苦手でした。(今まで学んだアルゴリズムは、累積和とbit全探索、Union-Find くらいです)
毎日の精進
私は競プロを始める前は、根っからのゲーマーでした。競プロを始める前の頃は、朝から講義を受講し、夜はゲームをやる or バイトにいく、のような感じでした。競プロを始めてからは、夜のゲームの時間を競プロの精進の時間にし、バイトが終わり次第バチャをやるという感じでした。そのため、競プロを始めた1ヵ月弱の間は全くゲームに触れていませんでした。始めたばかりの頃は、競プロを楽しんでいたのですが、日が経つにつれてゲームをやりたい欲が増していきました。私にとってゲームをできない日常は辛かったです。
競プロをやっていなかった間、何をしていたのか
主に、大学の課題とゲームの2つです。私の大学では、3年でプロジェクト学習というグループで研究や開発を行うカリキュラムがあります。その開発での私の仕事がなかなか終わらず、他のことに時間を使う余裕がありませんでした。「じゃあ、講義の間の時間は何してたの?」と思う方もいるかもしれません。愚かな私はその空いた時間をすべてゲームに費やしていました。今思えば、もったいない使い方をしていたなと思います。
最後に
私は競プロをサボっていましたが、決して嫌いになったわけではありません!最近では、なるべくコンテストに参加するように心がけていますし、新しいアルゴリズムも勉強中です。今ではアルゴリズムに面白さを感じるようになりました。前のように、毎日勉強を続けることは難しいですが、「自分なりのやり方でこれからも続けていこうと思います。」と書こうと思ったのですが、それだとまたサボってしまう気がしたので、ここでやることを宣言したいと思います。
来週から、1週間で学んだこと(アルゴリズム、問題解説)について記事をひとつずつではありますが、書いていこうと思います。そして、来年の春までには入茶目指して頑張ります!ちなみにもし書かなかった場合は、ペナルティを皆様に Twitter のアンケートで決めていただき、1番票が多かったペナルティを受けたいと思います。
ここまで読んでいただいた皆さまありがとうございました!初めての記事で読みづらいところが多々あったと思いますが、これから慣れていけるように頑張ります!
※本記事は競プロをサボるようになった原因の実体験を書いたものであり、決して競プロを批判するためのものではありません。不快な表現もあるかもしれませんがご容赦ください。