どうも中川です。
梅雨に入り、かなり熱くなってきましたね
そろそろセミが鳴き始める季節でしょうか
ところで、セミは1週間しか生きられませんよね?
もしセミのように人生が儚いものであるならば、一体何を成し遂げることができるというのでしょうか。
ということで今回は、たった1週間で競技プログラミング(python
)で、どこまで成長できるのか挑戦したいと思います。
まず AtCoder に登録して、毎週土曜日に開催されている AtCoder Beginners contest (ABC) に参加し、今の実力を測ります。
結果は、八問あるうちの一問目しか解けず7153位でした。
最初の問題は、すぐに解けることができたのですが
二問目からは文章の読解力と、自分で正解の値を導くアルゴリズムを構成する力が必要で、歯が立ちませんでした。
加えて、地味に詰まってしまったのが入力値の受取で、
入力例の通りに値が入力されるので、その入力値をしっかりと変数に入れてあげなければなりません。
例(入力される値)
2 3
変数に代入
X,Y = map(int,input().split())
例では、問題文に出力されている値を map() (関数内のすべての数字に、メソッドを適用させる)関数を使って
X,Y に int型を適用させ、それを split() によって分割します。
その他にも、学ぶことがたくさんあるということが分かりました。
まだまだ初歩的な段階である今の状態から、過去問や python の競技プログラミング知識を携えてからまた来週挑戦します。
一週間経ちました。
あれから、土日と授業の合間を縫って、帰宅後や電車内でも自分なりにできる範囲で勉強いたしました。
勉強に使用させていただいたものは、
まず、アルゴリズムやプログラミング知識を固めるために
工業大学生ももやまのうさぎ塾
というサイトを使わせていただきました。
ここでは、さまざまな数学の定理から、実際に競技プログラミングで使えるアルゴリズムまで、実際にコードを記載して説明してくれていますのでわかりやすくて、とてもためになります。
そして、過去問をとくために
AtCoder Problems
という、過去問が分かりやすく管理されているサイトを使わせていただきました。
自分は特にマス目の問題が苦手だったので、そこを重点的にだいたい20問くらいの問題を解きました。
他にも、分からないことがあればその都度調べ、Youtubeで解説動画を見たり自分なりに勉強しました。
結果
一問も解けませんでした。
A問題は前回より難しかったものの、難問というわけではなくクリアできたつもりだったのですが、何度提出してもクリアできませんでした。
自分のパソコンで実行した範囲では正解しているはずなのですが、どうしても正解になりませんでした。
出力がアルファベット一文字だったので、表示される環境が異なっていたりしたのか、表示する文字が違うかったのか、いずれにしてもここで時間を使うわけにはいかなかったので次に進みました。
次の問題は、条件に従って駒を移動させる問題で、練習の成果あってか少し考えれば解法が浮かびました。
しかし、
実装に少してこずってしまい、
なんとか正解できた時には、制限時間を3分オーバーしていました。。
この一週間自分なりに頑張って学習してきたつもりでした。
ですが、得点は伸びるどころか0に収束しました。
すごく悔しいです
ですが、前回まったくわからなかったB問題も自力で解くことができましたし、時間が許せばCにも食い込むことができたと思います。
練習の時はC問題まで解けたことも度々あったので、ひょっとしたら今回は好成績を残せるのでは、と思ったのですが
やはり、本番は練習の時よりも上手くいかないものですね。
結局、一週間では手応えを得ることはできても結果は得られませんでした。
このままでは、終われないと思ったので、今週も頑張ります。
そして、来週こそは結果を得ようと思います。
セミの命だけでは結果を出すことはできなかったので、もう一週頑張って、セミが本格的に鳴き始める前に競技プログラマーとしての第一歩を踏み出そうと思います。
不甲斐ない結果に終わってしまいとても恥ずかしいですが、来週も挑戦して必ず良い結果を報告します。
ここまで読んでくださり、本当にありがとうございました。