feature image

2019年12月7日 | ブログ記事

Pythonで競技プログラミングの勧め【AdC2019 38日目】

はじめまして、19のebiです。AtCoderで楽しく競技プログラミング(以下 競プロ)をしてたりしています。

この記事は東京工業大学デジタル創作同好会traP アドベントカレンダー2019 38日目の記事です。今回は19にコンピューターサイエンス[1]という講義でPythonに触れた人が多いと思うのでPythonを使った競プロについて書きたいと思います。
実際、自分はPythonで競プロをしています。競プロについては過去のブログなどを参考にしてみてください。

Pythonで競プロをするメリット・デメリット

実際に自分が半年間Pythonで競プロをしてみて思ったメリット・デメリットを独断と偏見で書き出したいと思います。

こんな感じですかね。実行時間が遅いのは競プロをすることにおいて相当不利です(いろいろ高速化がなされていますが...)。
しかし、初心者やプログラミングに慣れてない人にとってはメリットであげたコーディングのしやすさが大きいと思うのでPythonはおすすめです。

初めて競プロするときにつまずきやすいこと

一番つまずきやすいのはやはり入出力だと思います(僕もつまずきました)。問題を考える前につまずくのはつらいので入出力の仕方を紹介します。

入力について

整数の入力について紹介します。一つの入力ならこのようにできます。

13
a = int(input())

また、複数の数値を受け取りたいときはこのようにするとできます。

13 2 
#別々に受け取りたいとき
a,b = map(int, input().split())
#リストで受け取りたいとき
l = list(map(int, input().split())

他にも様々な場合の入力があると思います。いろいろ調べてみるといいかもしれません。

出力について

基本は次のようにすれば良いです。

print(出力したいもの)

しかし、リストをこのように出力すると次のようになってしまいます。

a = [1, 2, 3]
print(a)    
#出力結果 >>[1, 2, 3]

そこで、出力したいリストの前に"*"を加えると[ ]を省いて出力してくれます。

a = [1, 2, 3]
print(*a)
#出力結果 >>1 2 3

出力はその問題に合った出力をしましょう(WAになる可能性があります)

実際にやってみよう

たくさんのコンテストサイトがありますが今回はAtCoderを紹介します。問題文が日本語なのでとっつきやすいと思います。
特に初めて競プロをしてみるという人は、AtCoder Beginner Contest(以下 ABC)のA問題B問題がおすすめです。他にもたくさん問題があるのでぜひ挑戦してみてください。
また、この記事が投稿された次の日の12/8にABC147が開催されるので参加してみてはいかがでしょうか。

最後に

いかがだったでしょうか。Pythonで競プロをすることはとてもおすすめです。問題が解けてACできるとすごく楽しいのでぜひやってみてください。

明日の記事担当はNABEさんです。お楽しみに!


  1. 東京工業大学の教養科目で開講されているPythonを用いてプログラミングの基礎を学修する科目です ↩︎

ebi icon
この記事を書いた人
ebi

競技プログラミングが好きです。

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2021年4月18日
ベズー係数とN項の拡張ユークリッドの互除法
0214sh7 icon 0214sh7
2018年12月12日
多重スリーブの世界と,各種進捗報告。
Silviase icon Silviase
2021年4月26日
CPCTF2021 作問者writeup by hukuda222
hukuda222 icon hukuda222
2021年4月25日
CPCTF2021 作問者writeup by xxpoxx
xxpoxx icon xxpoxx
2019年12月21日
モデリングを始めてみたい君へ、MagicaVoxelのススメ
isak icon isak
2019年12月13日
ゲーム紹介「League of Legends」【AdC2019 44日目】
Yataka_ML icon Yataka_ML
記事一覧 タグ一覧 Google アナリティクスについて