【非公式】AtCoderがもっと楽しくなるリンク集です。有志による非公式サービス・ツール・ライブラリ・記事などをまとめています。, AtCoder Tools - サンプルケースのダウンロードが便利になる。ログイン、サンプルのローカルテスト、コード提出、テンプレートからのコード自動生成機能などを備えている。, Online Judge Tools - サンプルケースのダウンロード、テスト、提出ができる。CodeforcesやHackerrankなどの複数のコンテストサイトにも対応している。詳細は、対応表を参照。また、ランダムケースを出力するテンプレートを生成するOnline Judge Template Generatorを導入すると、デバッグの手間を減らすことができる。, WrongAnswer - 指定した問題のテストケースをダウンロードする。利用には、前述のOnline Judge Toolsが必須。使い方が日本語・英語で説明されている。, AC Deck - サンプルのテスト(Dockerにも対応)、提出ができる。対応言語は、C++ (GCC 9.2.1)、Python3 (3.8.2)、Go (1.14.1、GonumやGoDSには未対応)。組み込みのテンプレートが用意されており、主要な言語に対応している。, AI-virtual-assistant-python - サンプルのテスト、ログイン・コードの提出だけでなく、テンプレートやテストケースの生成などの多くの機能を備えているツール。C++とPythonに対応している。, getac - サンプルのテストを実行できる。対応言語は、C、C++、Clojure、Common Lisp、Go、Haskell、Java、Node.js、Python、Ruby、Scheme。, Procon Tools - 競技プログラミングサイトに参加する上で必要な機能を提供しているVisual Studio Codeの拡張機能。C++とGoに対応している。, Snowchains - サンプルケースのテスト、解答コードの提出に加えて、システムテストの取得もできる。C++とRustが利用可能。また、一部の機能を除いて、Codeforces、yukicoderにも対応している。, vim-atcoder - Vimでサンプルケースのテストするためのプラグイン。企業コンテストには、今後対応予定。, 利用するときは、RustとRustのビルドシステムおよびパッケージマネージャであるCargoが必要。, cargo-atcoder - サンプルケースのダウンロード、テスト、提出ができる。使い方が日本語で丁寧に説明されている。, cargo-compete - コンテストへの参加登録・サンプルケースの取得およびテスト、提出ができる。日本語のドキュメントも充実している。また、Codeforcesやyukicoderにも対応している。, testcase-generator - ランダムな整数や文字列を生成できるツール。また、多数のテストケースを生成して、愚直に実装した解法(愚直解)と比較することも可能。, 問題を作成されるときには、役割分担・作業工程などを把握するために、関連記事を参照することを推奨いたします。. Why not register and get more from Qiita? 本記事は Python で競技プログラミング(競プロ)を始めたい人向けの内容になっています。競技プログラミングといえば C++ でやるのがメジャーですが、最近(2019年現在)は Python も C++ に次ぐ勢力にまでなりました。そこで本記事では、Python で競技プログラミングを始めたい方向けの入門として、入出力を始めとする競技プログラミングで主に用いる基本的な文法の解説をします。, 問題例も載せていますが、* 印がついてるものは始めたてだと難しいので解かないで大丈夫です。それ以外のものは実際の問題を見て、わかりそうなら解いてみるのがおすすめです。, AtCoder 社長の chokudai さん曰く、初心者に Python はおすすめらしいです。, おすすめはどれ、って言われると、Java, C#, Pythonあたりになるのかなあ。Java, C#はHello Worldまでが遠いのがちょっとマイナスなのと、Main関数にstaticがついてるのが、超初心者にはマイナスなんだけど、速度があるし統合開発環境がセットで入るのが楽。Pythonは、教材増えてきたし書きやすいし, PyCharm などの IDE やエディタを使うのも良いですが、環境構築が面倒な方は AtCoder の各問題ページにあるコードテストや、オンライン実行環境の paiza.io を使うのもおすすめです。 「pythonに興味があるけど、何から始めていいかよくわからない」といった方向けに、pythonを操作出来るようにするために必要な「環境構築」を説明した記事です。2つの方法を画面キャプチャを用いながら紹介しているので、初めてという方も安心してしてください。 デバッグには sys.stdin を使おう ... OS には Linux か Mac OS を推奨しますが、 Windows 上でも動作します。 と書かれている通り、私の環境では何の問題もなく動作しています。 使い方. ・https://note.nkmk.me/python-list-append-extend-insert/ (リスト) になる, # list.index(x) で要素 x が list の中で何番目にあるか返ってくる(複数ある場合は最小のもの), # list.count(x) で要素 x が list 内にいくつあるかが返ってくる, # -> {'b': 2, 'c': 3, 'a': 1} だったり {'a': 1, 'c': 3, 'b': 2} だったり, https://note.nkmk.me/python-list-append-extend-insert/, https://note.nkmk.me/python-if-elif-else/, https://note.nkmk.me/python-list-comprehension/, 既に C++ 等の他の言語で競技プログラミングをやっているが、Python でも書けるようになりたい方, ABC-C (300点) 以降の問題はアルゴリズムやデータ構造の知識がないと難しいものも出てきます。, you can read useful information later efficiently. ・https://note.nkmk.me/python-for-usage/, 辞書型は順序が保持されないので注意が必要です(Python 3.7 以降は保持されますが、AtCoder 上のバージョンは 3.4 です)。具体的には、以下のコードは実行するたびに出力される要素の順番が変わります。, 参考記事: By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. ・https://note.nkmk.me/python-dict-create/, 便利な関数がたくさん用意されているので、積極的に使っていきましょう。ここではよく使うものをいくつかを紹介します。, プログラムを途中で終了させることができます。組み込み関数ではないですが、似たようなものなのでここで紹介します。, exit() の時点でプログラムが終了しているため、2 と 3 が出力されません。for 文、if 文と組み合わせて、条件を満たしたときだけそこで終了させたい場合によく使います。, 上のコードの場合、条件を満たすものがあればそこで終了して "YES" を出力し、満たすものがなければ "NO" が出力されます。 # [['. 問題例: ABC131 A - Security, list.sort() でもソートできますが、元のリストが書き換えられてしまうため個人的には好みじゃなく使っていません。, リストを作って要素を追加していく際、普通なら以下のように for 文を使って書きます。, 参考記事: Python で競技プログラミングを始めるために必要なこと. ', '. 詳しい文法については Python3基礎文法 などを参考にしてください。, 他によくつかうメソッドとして list.count() や list.index() があります。, 参考記事: Pythonで開発をしたいとお考えであれば、まずはPython用に環境構築をしましょう。この記事ではPythonの開発環境の構築方法を詳しく解説します。環境を構築して、ぜひ開発にチャレンジしましょう。 Help us understand the problem. ', '. MacでPythonをインストールして開発環境を用意する方法はいくつかあります。この記事では、Homebrew + pyenv、Miniconda、Python直接インストールの3つの方法について、メリットや具体的なインストール手順を紹介しています。 What is going on with this article? 競技プログラミングや AtCoder についての説明はここでは割愛します。(こちらのけんちょんさんの記事が参考になります) ', '. ・https://note.nkmk.me/python-if-elif-else/, 他にも引数を指定することができます。 range(5) は range(0, 5) の省略です。, 参考記事: ある列(カラム)に含まれる文字列を抽出したいような時に使える方法を「3つ」紹介しているので、興味のある方は参考にしてみてください。データ分析の幅が広がるはずです。, seabornを使ったデータの可視化についてシリーズで紹介している記事です。今回は2変量データ(カテゴリ変数×量的変数)を対象に可視化する方法である「バイオリンプロット」についてpythonを用いて紹介しています。, カテゴリ変数を数値化する前処理方法の一つである「Label Encoding」について解説した記事です。データに「欠損値がない場合」と「欠損値がある場合」とにわけて、その理由とコーディング方法をpythonを用いて紹介しています。, pythonのpandasを使って「Series」型データを作成する方法を紹介した記事です。Seriesの基本的な作成方法から、DataFrameとの関連性について解説しています。「Seriesってなんで必要なの?」という方は是非参考にしてみてください。, 「pythonに興味があるけど、具体的にどうやって勉強していけばいいかよくわからない」と悩んでいませんか?この記事では、pythonを自分の力にするためにオススメの勉強法を紹介しています。これからデータサイエンティストやAIエンジニアを目指してみたいと考えている方も参考にしてみてください。, OSごとに下図のように分かれているはずなので、自分のPC環境に合ったものを選択してダウンロード, 「Add Anaconda to my PATH environment variable」のチェックが外れている場合, 一番下の方までスクロールをして「Downloads」の中からご自身が使っているOSを選択してダウンロードページへ, Install画面の「Add python 3.x to PATH」のチェックが外れている場合. PyCharm などの IDE やエディタを使うのも良いですが、環境構築が面倒な方は AtCoder の各問題ページにあるコードテストや、オンライン実行環境の paiza.io を使うのもおすすめです。 ', '. 2.1 MacでPythonをインストールするには? 2.2 Macで開発環境を速攻で整えるなら; 3 Pythonのチュートリアルで雰囲気を掴む; 4 Macで使える勉強法やコツを知る. 4.1 Macで使える効率化ツールで勉強を加速させよ 問題例: ABC137 B - One Clue, 入力と出力だけできても肝心の中身が書けないとどうにもなりません。ここでは ABC (AtCoder Beginner Contest) の A 問題と B 問題レベルを解くのに最低限必要な文法について説明します。 ・https://note.nkmk.me/python-list-comprehension/, Python は実行速度が非常に遅いので、アルゴリズムの計算量的には十分でも提出すると TLE してしまうことがあります。そういうときは PyPy を使ってみましょう。PyPy についての説明は割愛しますが、簡単に言うと Python のコードがそのまま使えて Python よりも高速です。PyPy を使う際の注意事項など詳しくは「Python 競技プログラミング高速化tips」に書いてあります。, Python には PEP8 というコーディング規約があります。競技プログラミングのコードは基本的に自分しか読まないので正直どんな書き方をしても良いのですが、読みやすいコードを書くとバグも減らせます。詳細は「[Pythonコーディング規約]PEP8を読み解く」に書いてあります。なお、PyCharm では PEP8 に違反していると警告を出して教えてくれます。. ', '. 環境構築. 2 PythonをMacで環境構築していこう. '], ['. Python 3.8.2 で確認した内容となっています。 1. ・https://note.nkmk.me/python-slice-usage/ (スライス), 参考記事: また、Python には Python2 と Python3 がありますが、本記事では現在主流の Python3 について扱います。, n は行数です。for 文を使っても良いですが、このようにリスト内包表記を使うと楽です。, 使用問題例: ATC001 A - 深さ優先探索 *(典型ですが知らないと難しいです), また、何も指定しなければ行末に改行が入ります。end= 引数で指定してあげれば行末の改行をなくすこともできます。, カンマ区切りで複数出力することもできます。その際は sep= 引数で区切り文字を指定できます。, また、リストの中身を空白区切りで出力したい場合は以下のようなこともできます。この際も区切り文字を指定できます。, 補足ですが、最近の AtCoder の問題は空白区切りの出力と改行区切りの出力が区別されないようです。具体的には、, のどちらも提出する際は区別されません。 '], ['. macにデフォルトでインストールされているpythonのバージョンは2系と呼ばれるバージョンになります。 色んなサイトのpythonのリファレンスはだいたい3系に合わせて記載されていたりするため、今からpythonの勉強をする、機械学習を行う場合はまずはpython3の切り替えを検討してみてください。 ', '#', '. 今回は、「pythonに興味があるけど何からしていいかわからない」という方向けに、pythonを操作出来るようにするための「環境構築方法」を中心に紹介した入門編の記事です。, pythonを使って、自分のPCで操作出来るようにするためには、「pythonのインストール(環境構築)」と「使い方の把握」の2ステップが必要となります。そのうち、今回は環境構築を紹介する前編記事です。, 【ステップ①】インストールpythonの使用環境を準備することが目的。今回記事(前編)にて紹介。, 【ステップ②】使い方の把握pythonでコードを書く方法の理解が目的。次回記事(後編)にて紹介。, Windows環境を前提として話を進めていきますが、下記紹介する対象URLの中に「Mac」や「Linux」専用のダウンロードページがあるので、適宜読み替えて導入を進めてみてください。, まず最初に、pythonの環境構築の方法を紹介していきます。結論から言うと、導入方法は2通りありますが、初心者の方であれば最初に紹介する「Anaconda」経由の環境構築がオススメです。, pythonを実際に使っている立場から言うと、正直どちらの方法でも大差ないと思っています。ただ、「データサイエンティスト」や「AIエンジニア」になることを目的としている方であれば、必要な「パッケージ」が一通り準備されている「Anaconda」がオススメとなります。, つまりAnacondaを使うと簡単にセットアップ出来るということです。ちなみにプログラミングスクールでも、python初学者向けの初期設定として「Anaconda」での環境構築が一般的になっています。, では実際に「Anaconda」をダウンロードしてみましょう。公式ページにアクセスして、ダウンロードページを探してみてください。OSごとに下図のように分かれているはずなので、自分のPC環境に合ったものを選択してダウンロードしてみてください。, 留意点としては、「python」には「2.x系のversion」と「3.x系のversion」があるのですが、最新の「3.x系のversion」を選択するようにしてください。, ダウンロードが始まったら、デフォルト設定でOKなのでそのままインストールして完了させてください。(Install画面の「Add Anaconda to my PATH environment variable」のチェックが外れている場合には、チェックを入れて環境pathを通しておいてください。), 続いて「python公式サイト」経由でダウンロードする方法を見ていきます。(※既に「Anaconda」でダウンロードが完了している方は、この部分は流し読みしてください。), 公式ページにアクセスしたら、一番下の方までスクロールをして「Downloads」の中からご自身が使っているOSを選択してダウンロードページへ飛んでください。あとは指示に従ってインストールすればOKです。, 先ほどの「Anaconda」と同様ですが、最新の「3.x系のversion」を選択するようにしてください。, これもデフォルト設定でOKなので、一気にインストールしてしまいましょう!(Anaconda同様、Install画面の「Add python 3.x to PATH」のチェックが外れている場合には、チェックを入れて環境pathを通しておいてください。), 「ちゃんとインストール出来ているか不安だな」という方は、下記コマンドを入力して「pythonのversion」が適切に表示されているか確認してみてください。(Windowsならコマンドプロンプト、Macならターミナルで操作), 今回は、pythonを始めたい方向けの入門編記事として、環境構築方法について紹介してきました。インストールには多少時間がかかるかもしれませんが、導入方法自体はシンプルだったかと思います。, インストールの段階でつまづいてしまう方も多いそうなのですが、pythonを使えるようになれば世界が広がるので、是非諦めずにチャレンジしてみてください!, 環境構築が完了して「実際にコードを書いてみたい!」という方は、以下後編の記事も参考にしてみてください。, 「難しいことをわかりやすく」をコンセプトにあれこれ分析して紹介しているブログです。, 「pythonをインストールしたけど、具体的にどうやってコードを書いたらいいかわからない」という方向けに、pythonのコードを書く方法を紹介した記事です。「Jupyter Notebook」の起動方法も説明していますので、興味のある方は参考にしてみてください。, seabornを使ったデータの可視化についてシリーズで紹介している記事です。今回は1変量データを対象に可視化する方法である「ヒストグラム」についてpythonを用いて紹介しています。, pythonのpandasを使って、データフレームに含まれる「文字列」を抽出する方法を解説した記事です。 # [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] になる, # n は行数 atcoder_docker_sample - Visual Studio Code・Docker・Gitを使って、PythonとC++の実行環境を構築。 atcoder-rs - Rustのテンプレートプロジェクト。 at-coder-with-php - PHPの実行環境を構築。 AtCoder with Rust in mac - cargo-atcoderを使用して、Mac OSでRustの実行環境を構築。 ', '#', '.']]