1
2

Pythonを使ってAtCoderを始めるためのガイド

Last updated at Posted at 2024-04-11

はじめに

AtCoderは、世界最高峰の競技プログラミングサイトです。
リアルタイムのオンラインコンテストで競い合うことや、
5,000以上の過去問にいつでもチャレンジすることができます。(atcoder.jpより引用)

 本記事では、Pythonを使ってAtCoderを始める手順をまとめた。下準備としてPythonの環境構築から始まり、AtCoderで実際にコンテストに参加するまでの一連の流れを説明していく。

下準備1 Pythonのインストール

Pythonとは

 Pythonとは、主に科学計算、データサイエンスの分野で使われているプログラミング言語だ。直感的な文法が特徴で初学者にとってもやさしい言語とされる。
 インタプリタ言語であるため実行速度が遅く、競技プログラミングでは不利といわれることがある。

手順

  1. Python公式ページからパッケージをダウンロード
  2. パッケージを起動
  3. "Add python.exe to PATH" をチェック
  4. Install now をクリックしてインストールを開始
  5. コマンドプロンプトを起動してpy --versionと入力する
    下のように表示されれば成功
    C:\Users\username>py --version
    Python 3.10.4
    

実際にソースコードを実行してみる

Pythonにはソースコードをテキストデータで保存して実行するほかに、対話型シェルというものがある。まずは対話型シェルでハローワールドを実行してみよう。

  1. コマンドプロンプトを起動してpyと入力する
    C:\Users\username>py
    Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    
  2. print('hello,world!')と入力する
    C:\Users\username>py
    Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> print('hello,world!')
    hello,world!
    >>>
    

hello,world!と表示された。以上が簡単なPythonの対話型シェルの使いかたである。次に、ソースコードをテキストデータで保存して実行してみよう。

  1. 適当なフォルダ内でtest.pyとしてファイルを作成
  2. test.pyを編集
    今回は以下のようなソースコードにした。a,bを標準入力から取得し、a+bを出力するプログラムだ。
    a=int(input('a = '))
    b=int(input('b = '))
    print(f'a + b = {a+b}')
    input()
    
  3. test.pyがあるフォルダでコマンドプロンプトを起動
  4. py test.pyと入力する
    下のように表示されれば成功
    C:\test.pyのあるフォルダ>py test.py
    a = 2
    b = 3
    a + b = 5
    

下準備2 VisualStudioCodeのインストール

VisualStudioCodeとは

VisualStudioCodeとは、Microsoftが提供するコードエディタ。VSCodeという略称で呼ばれる。拡張機能によって非常に多くの言語を編集・デバッグすることが可能。

手順

  1. VSCode公式ぺージからインストーラをダウンロード
  2. インストーラを起動
  3. 手順に沿ってインストールする

VSCodeでPythonをデバッグする

  1. VSCodeを開き、Ctrl+Shift+Pを押してコマンドパレットを開く
  2. Pythonと検索してSelect Interpreterをクリック
  3. python.exeの候補が表示されるので先ほどインストールしたもののパスをクリック
  4. 拡張機能をインストール
    VSCodeの拡張機能のタブを開き、Pythonと検索する。
    PythonとPython Debuggerの2つをインストールする。
    image.png
  5. 適当なPythonファイルを開き、F5を押す
  6. Python Debugger: Current Fileを選択
    必要に応じてlaunch.jsonを変更する必要がある。例として私が使っている環境のlauch.jsonの内容を示す。
    {
    	// Use IntelliSense to learn about possible attributes.
    	// Hover to view descriptions of existing attributes.
    	// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    	"version": "0.2.0",
    	"configurations": [
    		
    		
    		{
    			"name": "Python Debugger: Current File",
    			"type": "debugpy",
    			"request": "launch",
    			"program": "${file}",
    			"console": "integratedTerminal"
    		}
    	]
    }
    

AtCoderのアカウント登録

下準備が終わり、ローカル環境で自由にPythonを編集・デバッグできるようになった。早速AtCoderのサイトにアクセスしてアカウント登録をしよう。
<詳細な方法はAtCoderチュートリアルを参照>

  1. 画面右上の「新規登録」のボタンをクリック
  2. 必要事項を入力して登録

過去問を解く

 AtCoderでは過去に開催されたコンテストの問題や、特別に作成された問題集などにいつでも挑戦できる。まずはAtCoderチュートリアルにある練習用ページ(https://atcoder.jp/contests/practice)にアクセスして提出の仕方を学ぼう。
 提出の仕方が分かったら、過去に開催された問題を解いてみよう。ホームから「コンテスト一覧」をクリックすると、過去に開催されたコンテストや開催予定のコンテストの一覧を見ることが出来る。まずはABCクラスの問題を適当に解いてみるとよいだろう。

コンテストに参加する

コンテスト一覧の予定されたコンテストの中から一つ選んでクリックし、コンテストページに飛ぶと参加登録をすることが出来る。参加の際にはRatedとUnratedを選ぶことが出来る。

使用する言語について

 AtCoderは多数のコンパイラが用意されており、基本的に自分の好きな言語で問題を解くことが出来る。言語によって長所や短所があり、人によって好みが分かれるところである。
 AtCoderで最も多く使われている言語はC++だ。C++は実行速度が高速で、且つ競プロの問題を解くのに便利なライブラリも多数用意されている。公式チュートリアルでも推奨されており、多くの解説ページでは実装例としてC++のソースコードが示されている。C++を使っていれば解説を読むのも楽である。
 本記事では環境構築や文法の簡易さからPythonを用いて導入を行ったが、この後から使用する言語を変えることもさほど難しくはない。Pythonを使用する場合でも、アルゴリズムを工夫して時間計算量を減らせば、絶対にACできないということはない。また、提出結果のページからは他人のACとなったPythonのコードを見ることもできるため、そこから実装のヒントを得ることも可能である。

テンプレートを作ろう

 競プロをやっていると、複数の問題で同じようなコードを書くことがしばしばある。そんな時、自分用のテンプレートを作っておいて、それを編集したものを丸ごと提出すれば実装時間を短縮することが出来る。

例えば、整数a,b,cが与えられ、以下のような入力形式の問題があったとしよう。

a b c

例)
0 1 2
12 5 100

このような入力形式はAtCoderで頻繁に登場するため、これを取得するコードを毎回一から書くのは冗長である。そこで、以下のような関数をテンプレートに追加し、その下から問題を解くソースコードを書くようにする

def int_line_input():
    return map(int,input().split())

実際はこのように使う

def int_line_input():
    return map(int,input().split())

a,b,c=int_line_input()
print(a,b,c)
#出力例:0 1 2

過去問を解いているとき、別の問題でも使えそうな実装を自分用のテンプレートに追加しておけば、本番で実装する手間を省くことが出来る。

リンク集

Pythonで競プロをやる際に役に立つ便利なリンクをまとめた。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2