Pythonで競技プログラミングはじめようぜ!

 2020.05.25  株式会社システムインテグレータ

社内のプログラミングコンテストをきっかけに、競技プログラミング(以下、競プロ)の面白さを知ってから約1年、私の経験をもとに執筆しました。競プロ初心者・python初心者が対象の記事です。内容については主観も入ってしまっていますが、間違い等あれば指摘してもらえればうれしいです!

競技プログラミングって何?という方は以下の記事をご参照ください。
競技プログラミングとは?

競技プログラミングと業務

競プロと業務の能力に関連があるかに関しては、色々な意見があると思います。
世界的な競プロサイト"AtCoder"の運営会社社長であり、自身も世界トップクラスのプログラマーでもある高橋直大氏は、以下のように述べています。

“競プロ(AtCoder)で保証できるのはアルゴリズム力と速くて正確なコーディング力だけ”

これを解釈すると、

“競プロが得意 ≠ 技術者として優れている”

ということですが、競プロによって得られる能力があることは確かで、以下のようなものは技術者として持っていても損はしないものだと思います。

 ・様々なアルゴリズムと思考の引き出し
 ・(競プロで多用される)ライブラリの深い理解
 ・正確なコーディング力

個人的には「難しい問題解けた時のドーパミンやば~」という若干中毒的な楽しみでハマっている面があり、単純にゲームのように楽しめると最高ですね。

競技プログラミングのはじめかた

熱い気持ちがあれば大丈夫です。
具体的にはこれだけ!

  1. 環境を整える
  2. AtCoderに参加する
    AtCoder:競プロを開催する国内最大のサイト

pythonで競技プログラミングをするメリット・デメリット

ここまでは一般的な競プロの話でしたが、ここからはpythonで競プロに取り組むにあたっての情報です。

メリット

  1. 1日勉強すれば競プロできる(それくらい簡単)
  2. コードが簡潔で分かりやすい
  3. 競プロで多用するライブラリが充実している
  4. 動的型付け言語なのでintとlong間違っても大丈夫。double、floatって何?
  5. コンパイル言語でプログラミングコンテストに出ている人のように「スクリプト言語使って楽にコーディングしてすいませーん」と煽られたりすることがない

デメリット

  1. for文の処理が遅い
  2. 再帰関数も遅い
  3. とにかく遅い
  4. どう頑張ってもpythonでは解けない問題がある(競プロで世界レベルを目指すなら大人しくC++使いましょう)

pythonの環境を整える

競プロでは解答欄にベタ打ちでコードテストも行えるため慣れればパソコンとネット環境さえあれば大丈夫です。

とはいえ、IDEと実行環境は整えておきましょう。pythonのおすすめのIDEはPyCharmです。(異論は認めます。)特にこだわりはありませんが無料でこんな素晴らしいものを使えることに感謝!!他にはVSCとかが良いらしいですが、その辺は詳しい人に聞いて下さい。
とりあえず、以下のようなウェブサイトを参考にして環境を整えましょう。
最強のPython統合開発環境PyCharm

また、pythonで競プロをする場合にはnumpyが使えるので慣れてきたら追加すると良いです。

AtCoderする

pythonの環境が整ったら、AtCoderに登録しましょう。

AtCoder:競技プログラミングコンテストを開催する国内最大のサイト

毎週末開催されているコンテストに参加してみてください
とある方が「間違えてもいいから、とりあえず提出しとけ」とおっしゃってたのですが、まずは提出する気持ちが大切です。 「正解?別に欲しくないし!」的な気軽な気持ちで参加してみるといいと思います。

さいごに

このブログが1人でも多くの人が競プロを始めるきっかけになればうれしいです!皆さんと一緒に競プロについてわちゃわちゃお話しできる日を楽しみにしています。


RELATED POST関連記事


RECENT POST「プログラミングコンテスト」の最新記事


プログラミングコンテスト

アルゴリズムとデータ構造の学習におすすめの本10選 〜競技プログラミングの視点から〜【2023年版】

プログラミングコンテスト

企業・学校対抗プログラミングバトル「PG BATTLE 2022」が 2022 年 10 月 22 日にオンラインで開催

プログラミングコンテスト

2021年社内「SQLコンテスト」を開催しました!

プログラミングコンテスト

社内プロコンで1位を取るための具体的な学習法

Pythonで競技プログラミングはじめようぜ!

TOPSIC TOPへ