競プロ、おすすめです
こんにちは。エンジニアの牧田です。今回は、最近取り組んでいる競プロ(競技プログラミンング)についてです。
競プロを始めたきっかけ
競プロを始めたきっかけは、DWSに入社した当時に、競プロ部が活動していることを知ったからです。(競プロ部が始まったきっかけや詳細については↓の記事を見てみてください)
それまでは、競プロという単語自体は知っていたものの、実際に取り組んだことはありませんでしたが、面白そうだと思ったので(あと、報奨金がもらえるらしいので)、始めて見ることにしました。
やっていること
競プロ部の活動
競プロ部に入部した当初は、週1回アルゴリズムの書籍(問題解決力を鍛える!アルゴリズムとデータ構造)を読む活動していたので、それに参加していました。基本的なアルゴリズムをざっくりと学べたのでよかったのですが、書籍の最後の方は複雑な内容も入っていて、なかなか難しかったです…。ある程度問題が解けるようになってからまた読み返すと、新しい発見もあっていいと思います。
現在の競プロ部での活動は、AtCoderにもある競プロ典型90問の★の小さい問題から順に、週1回ひとり1問ずつ事前に解いてきて、解法を話し合うという活動をしています。その名の通り、競プロの典型的な問題が集まっているので、いい勉強になっています。最近は★5の問題に突入したので、なかなか難しくなってきました…。
また、それ以外にも個人的にAtCoderの過去問を解いたりして勉強しています。
AtCoderのコンテストに参加
AtCoderで大体週に1回開催されているAtCoder Beginner Contest(ABC)に参加するようにしています。参加すると結果に応じてレートが変動していくので、ゲームみたいで楽しいですね!!
自分の現在のレートは↓こんな感じです。夏あたりはコンテストへの参加をサボっていたんですが、最近はまた参加するようにして、レートも上がってきているので、この調子で水色まで行きたいところです。
競プロは業務に役立っているか?
これは賛否両論ある話題なのですが、自分としては競プロは役に立っていると感じています。競プロで出てくるような細かいアルゴリズムが役立つことは(自分の業務内容においては)ほぼないですが、主に「計算量の意識」が役立っています。
競プロの問題では、実行時間に制限があるので、時間に間に合うように計算量を考えて実装しないといけません。この考え方は、業務でも役立つ場面が多いです(自分はバックエンドを主にやっているので特に)。例えば、「for文の二重ループがあるから、mapを使った方が速くなるな。」みたいな感じです。mapやsetなどのデータ構造に関する知識も、競プロをやることによって詳しくなったので、それも役に立っていることの一つですね。
他にも競プロが役立ったことはいくつかあると思いますが(コードを早く実装する力やデバッグ力など)、自分の中では計算量の意識が一番大きいですね。いずれにせよ、競プロによっていいコードが書けるようになったというのは間違いないです。
まとめ
競プロは楽しくて役に立つのでおすすめです!!
↓競プロ部員も募集中です!
AWSでクラウドネイティブな開発に携わりたいエンジニア募集!新卒も歓迎!