名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。アクセス解析のためGAを利用、Googleに情報を送信しています。商品紹介のためAmazonアフィリエイトを利用、Amazonに情報を送信しています。記事に関しては私が書いていない引用文を除いて自由にご利用ください。

【サポーターズ勉強会】ゼロから始める競技プログラミングの感想補足等

勉強会について

URL: https://supporterzcolab.com/event/474/

@mosmos_21 さんおつかれさまでした!

mosmos21.hatenablog.com

登壇内で紹介されたURLページ

AtCoder

最近話題の日本語でアルゴリズムコンテストが出ているサービス。まずはここから始めてみよう。

http://atcoder.jp

ちなみにコンテスト体型はこんな感じ。(とても雑な図)

はじめての方はまずAtCoder Beginner Contest(ABC)へ!

f:id:MireiMixin:20180731001209p:plain

補足:なんでAtCoderなの?

  • 日本語でコンテストを受けることが出来る
  • 時間帯が日本時間で参加しやすい(ほかは海外コンテストが多く、参加が難しい)
  • 多様なプログラミング言語で解くことができる
  • コンテストが定期的かつ高頻度で開催されており、継続しやすい
  • 最近のビギナー向けコンテストでは回答例がついており、非常に丁寧

上記より、今から日本国内でプログラミングコンテストアルゴリズムをやってみたいのであれば、AtCoderが一強と考えています。

AtCoderを始める

まずは10問で問題と考え方に慣れていこう!

AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~ - Qiita https://qiita.com/drken/items/fd4e5e3630d0f5859067

コンテストの結果を振り返ろう

このサイトでユーザーIDを打ち込むと見れます。統計情報を見るのもよし、ライバルと比べるのもよし。

AtCoder Problems https://kenkoooo.com/atcoder/

典型的なアルゴリズムを学ぼう

有志によるあり本の類題が挙げられているので、この辺をやってみましょう。

AtCoder 版!蟻本 (初級編) - Qiita https://qiita.com/drken/items/e77685614f3c6bf86f44

書籍

チーター本

初心者でも楽しめる問題がセレクトされており、ある程度のプログラミング経験がある人が競技プログラミングの雰囲気を知るのに向いているのかもしれません。

最強最速アルゴリズマー養成講座 プログラミングコンテストTopCoder攻略ガイド https://www.amazon.co.jp/dp/4797367172/ref=cm_sw_r_tw_apa_NFXxBb61F60E4

螺旋本

非常に基礎的なソートからグラフアルゴリズムまで、一般的な情報科学で学ぶようなアルゴリズムを学ぶことができます。

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造 https://www.amazon.co.jp/dp/4839952957/ref=cm_sw_r_tw_apa_WGXxBb806D6C4

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

あり本

競技プログラミングでは典型的なアルゴリズムがまとまっています。一歩進んだ中級者以上におすすめです。

プログラミングコンテストチャレンジブック [第2版] 〜問題解決のアルゴリズム活用力とコーディングテクニックを鍛える〜 https://www.amazon.co.jp/dp/4839941068/ref=cm_sw_r_tw_apa_2HXxBb3A8AD84

プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?

プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?

まとめ

固く言えば競技プログラミングはコンテストという遊びの側面が強い一方で、短時間で計算量と制約を想定し実装をしなければいけません。

その中でコーディング技術の向上、設計能力の向上が期待できます。

今転職や自分自身のコーディングスキルに自身のない方、ぜひこの機会に競技プログラミングを始めてみて、自分のエンジニアとしてのキャリア充実、エンジニアとして年齢や会社を超えたコミュニティに参加してみて、様々な経験をしてください。

競技プログラミングの世界はみんなで強くなって行こうという主体性・好奇心の強い集団です。 新しく始める方を暖かくサポートしますので、今日勉強会に参加してくれた人が継続的に続けてくれると嬉しいなと思います。