半年ぐらい前にAtcoderに挑戦して挫折した話を備忘録として残します。
なんだか壮大なタイトルですが、コンテスト参加は2回だけです。すいません。
なぜ、2回だけで諦めてしまったのかを書こうと思います。
競プロ?ナニソレオイシイノ?
半年ぐらい前だと思います。ちょうどこのQiitaを見始めたときに、ホームの記事にちょいちょい見かけるネタが有りました。入茶、緑、青......
そう。競プロです。
気になって調べてみると、なにやら面白そうではないですか。色々な言語を使って問題を解いていく競技プログラミング。ちょうどやっていたUnityで行き詰まっていたので、息抜きがてらやってみることにしました。
最初の壁
Atcoderについて調べてみると、使う言語は大半がC++だったので、ある程度知識があったC#ではなく、C++を勉強しました。とはいっても、基礎文法だけでいけるだろなんて舐めていました。
合計5時間ぐらいでこちらのサイトが殆どできた(と思っていた)ので、週末のBeginnercontestに参加しようと大会情報を見たところ、最初の壁が。
それは、コンテストの時間。
僕は中学生&ロングスリーパーなので大体22時ぐらいには寝てしまうのですが、コンテストは23時までですよね?しかも二時間連続で集中力なんて持つのでしょうか?この時点でちょっと諦めかけていました。
次々と迫りくる壁
他にも様々な課題がありました。
1. 数学
最初のコンテストの日。A問題はすぐに解けたものの、B問題で行き詰まりました。なぜか?
問題文が読めないんです。$\in$とか$\sum$とか。なんですかこいつら?
この記号たちが出てくるのは主に数IA。つまり高校範囲です。中学二年生の自分には全く意味がわかりませんでした。ここでもういいや、と思ってそのコンテストはA問題だけ解いて諦めました。
2. アルゴリズム
これは自分だけかもしれませんが、半年ぐらいUnityをやっていて、ある程度プログラムが書けると思っていたのがいけませんでした。問題文がわかっても、アルゴリズムはなかなか思いつきません。無理やりfor文で書いたりしてみますが、そう上手くは行きません。アルゴリズムを勉強しなければいけないというのが、苦痛に思えて結局、2回目のコンテストから今現在まで一度もやっていません。
3.実行速度
何度も提出したのですが、だいたいタイムアウトが帰ってきます。これを見て、いかに自分が効率の悪いコードを書いていたのかわかりました。A,B問題は頑張れば解けるけど、C問題になると途端に手が止まる、そういう人いますかね?
結論
自分が挫折したのは、競プロをなめていたのがいけなかったのと、数学やアルゴリズムについての知識がなさすぎるからでした。それをきっかけに数学を頑張り始めて、ようやく理解できるようになったと思います(今は数Aをやってます)。結果的に挑戦したのは良かったんだと思います。プログラムの実行速度も意識してかけるようになったのも大きな成長だと思います。
※自分への警告
この記事を投稿したからにはやらなければと思い、さっそく今週のコンテストに参加登録しました。
何事も逃げていてはだめなので。
必ずやりましょう。
半年でどれぐらいできるようになったのかまた書いてみようと思います。