要約
上から順に。
- ユーザー登録
- 環境構築
-
https://atcoder.jp/contests/apg4bpython/
とりま3章まで -
https://kenkoooo.com/atcoder/#/table/
- これのAの欄を埋めていこう
- 簡単に解けるなと思ったらこれのBの欄を埋めていこう
-
https://atcoder.jp/contests/abc189/tasks/abc189_b
https://atcoder.jp/contests/abc205/tasks/abc205_a
https://atcoder.jp/contests/abc231/tasks/abc231_a
https://atcoder.jp/contests/abc274/tasks/abc274_a
https://atcoder.jp/contests/abc407/tasks/abc407_a
https://atcoder.jp/contests/abc082/tasks/abc082_a
4と並行してこの問題を解こう
ユーザー登録
参加登録のページを開き、指示に従って登録してください。
環境構築
競プロを始めるために、最初から複雑な開発環境を作る必要はありません。
AtCoderではブラウザ上でコードを書いて、そのまま提出できます。(コードテスト)
そのため、「まず問題を解いてみる」だけなら環境構築なしでも始められます。
ただし、問題を解くたびにコードを保存したり、手元でテストしたりするなら、ローカル環境を用意しておくと便利です。というか人権です。
また、Windowsでプログラミングを始める際、最大の壁となるのが「開発環境の構築」です。WindowsはMacやLinuxに比べて癖が強く、初心者にとって非常に難しいのが現状です。
ここでは、WindowsにWSL2を導入し、WSL2上でPythonを使って競プロを始めるための環境を作ります。
基本的にはこちらの動画を参考にしていただいて構いません。(ただしPythonの導入作業はないです)
本ガイドではPythonを導入するので、こちらの動画が終われば「Pythonの導入」の節を読んでください。
文で書いたものをここに書いておきます。
WSL2の導入
1. WSL2をインストールする
WSL2(Windows Subsystem for Linux 2)は、Windows上でLinux環境を動かすための仕組みです。競プロでは、Linuxのコマンドや開発ツールを使えるため、快適にコードを書けます。
まず、WindowsのスタートメニューからターミナルまたはPowerShellを管理者として起動します。
その後、次のコマンドを実行してください。
wsl --install
このコマンドによって、WSL2と標準のLinuxディストリビューションであるUbuntuがインストールされます。
インストールが完了したら、指示に従ってWindowsを再起動します。
再起動後、Ubuntuが起動し、Linuxで使用するユーザー名とパスワードの入力を求められます。任意のユーザー名とパスワードを設定してください。起動が遅ければ手動で起動させても構いません。
パスワードを入力しても画面には表示されませんが、正常な動作です。
WSL2が正しくインストールされたか確認するには、PowerShellで次のコマンドを実行します。
wsl --status
WSLの既定のバージョンが2になっていれば、WSL2を使用できています。
ディストリビューションの状態を確認する場合は、次のコマンドを実行します。
wsl --list --verbose
VERSION の列に 2 と表示されていればOKです。
2. Ubuntuを更新する
Ubuntuを起動し、次のコマンドを実行してパッケージ情報を更新します。
sudo apt update
続けて、インストール済みのパッケージを更新します。
sudo apt upgrade
途中で確認を求められたら、Y を入力してEnterキーを押します。
これで、Ubuntuを最新の状態に近づけられます。
Pythonの導入
3. Pythonをインストールする
次に、Ubuntu上にPythonをインストールします。
sudo apt install python3 python3-pip
インストールが完了したら、Pythonのバージョンを確認します。
python3 --version
Pythonのバージョンが表示されればOKです。
例えば、
Python 3.x.x
のように表示されます。
Ubuntuでは、Pythonを実行するときに python ではなく python3 と入力することがあります。
python コマンドでも実行できるようにしたい場合は、次のパッケージをインストールしてください。
sudo apt install python-is-python3
その後、次のコマンドが動けば設定完了です。
python --version
4. 作業用フォルダを作る
競プロ用のファイルを保存するフォルダを作ります。
mkdir -p ~/atcoder
cd ~/atcoder
mkdir はフォルダを作成するコマンド、cd はフォルダを移動するコマンドです。
現在いるフォルダを確認するには、pwdコマンドを使います。
pwdを実行して/home/ユーザー名/atcoder のように表示されれば、競プロ用フォルダに移動できています。
5. エディタを用意する
次に、Pythonを書くためのエディタを用意します。
おすすめはVisual Studio Code(VSCode)です。1
Windows側にVSCodeをインストールし、VSCodeの拡張機能からWSLをインストールすると、WSL2上のファイルを直接編集できます。
VSCodeをWSL2に接続するには、Ubuntuのターミナルで作業用フォルダに移動し、次のコマンドを実行する必要があります。
cd ~/atcoder
code .
VSCodeが起動し、WSL2上のフォルダを開ければ成功です。
また、Pythonを扱う場合、この拡張機能があると便利です。
- Python
Python用の拡張機能を入れると、コード補完やエラー表示、デバッグなどの機能を利用できます。
ただし、VSCodeは必須ではありません。
ターミナル上のエディタやAtCoderのコードエディタを使っても、競プロを始めることはできます。
6. Pythonが実行できることを確認する
~/atcoder フォルダに main.py というファイルを作り、次のコードを書きます。
print("Hello, AtCoder!")
Ubuntuのターミナルで、ファイルがあるフォルダに移動します。
cd ~/atcoder
その後、次のコマンドを実行します。
python3 main.py
または、python コマンドを設定している場合は、
python main.py
を実行します。
Hello, AtCoder!
と表示されれば、WSL2上でPythonを実行する環境は完成です。
7. WindowsのファイルをWSL2から扱う
WSL2からWindowsのファイルにアクセスすることもできます。
WindowsのCドライブは、WSL2では次の場所にあります。
/mnt/c
例えば、Windowsのユーザーフォルダに移動する場合は、次のように入力します。
cd /mnt/c/Users/ユーザー名
ただし、競プロ用のファイルは、基本的にWSL2側のホームディレクトリである ~/atcoder に保存するのがおすすめです。
~/atcoder
WSL2側に保存したファイルは、Windowsのエクスプローラーから次の場所で確認できます。
\\wsl$
エクスプローラーのアドレスバーに \\wsl$ と入力すると、インストールされているLinux環境のファイルを開けます。
8. AtCoderで提出してみる
ここまでできたら、実際にAtCoderの問題を解いてみましょう。
初めてのAtCoderなら、practice contestのA問題がよいです。「難しそう………」と思ったなら、次章の「APG4bPython」に取り組んでください。
AtCoderでは、提出時に使用するプログラミング言語を選択します。Pythonを選択してコードを提出してください。
最初のうちは、ローカル環境で完璧にテストしてから提出しようとする必要はありません。
問題を読んで、
- コードを書く
- WSL上で実行してみる
- AtCoderに提出する
- 結果を見る
という流れを繰り返して、少しずつ慣れていけば十分です。
環境構築チェックリスト
- WSL2をインストールした
- Ubuntuを起動できる
-
wsl --statusでWSL2を確認できる -
sudo apt updateとsudo apt upgradeを実行した - Pythonをインストールした
-
python3 --versionが動く -
main.pyをWSL2上で実行できる - VS CodeからWSL2のフォルダを開ける
- Pythonを選択してコードを提出できる
APG4bPython
こちらの教材に3章まで取り組みましょう。
4章はモチベーションがあれば取り組むとよいです。
過去問精進
競技プログラミングに取り組む人(通称、競プロer)は、過去問を解いて勉強することを「精進」と呼びます。
精進を行うとこのような効果が期待できます。
- 「単純にアルゴリズムをそのまま使うだけ」しかできない状態から、「問題の言い換えを通して、問題に具体的なアルゴリズムをどう使うかがわかる」状態になる
- 知らないアルゴリズム・メソッド・関数・型を知ることが出来る
- 言語を学べる
本ガイドでは、ABC(AtCoder Beginner Contest)のA問題・B問題を解くことを推奨します。
B問題はコーディング初心者にはかなり難しいので、A問題から先に解くことが大事です。
ある程度A問題の精進に慣れれば、B問題の精進に進むとよいです。
過去問精進にはこれらのサイトが使いやすいです。
また、次の章の内容をこなすのはB問題の精進に慣れてからのほうがよいです。
浮動小数点誤差の回避を求められる問題集
デジタルなコンピュータは2進数で動いているため、一般的に$0.1$などの小数を正しく表現できず、誤差を含みます。
それを回避することを求められる問題がよく稀に(ABC5~10回に1回くらい?)出題されます。
- https://atcoder.jp/contests/abc189/tasks/abc189_b
- https://atcoder.jp/contests/abc205/tasks/abc205_a
- https://atcoder.jp/contests/abc231/tasks/abc231_a
- https://atcoder.jp/contests/abc274/tasks/abc274_a
- https://atcoder.jp/contests/abc407/tasks/abc407_a
- https://atcoder.jp/contests/abc082/tasks/abc082_a
おわりに
お疲れ様でした。本ガイドのABC-B精進、「浮動小数点誤差の回避を求められる問題集」を終えたなら、チュートリアルは終了です。
これからはAtCoderが楽しくなり、勉強がより必要になるフェーズに入っていきます。
これからやるべきこと
Frest氏の【競技プログラミング】プログラミング初心者がAtCoderを始めて10か月で水色になった方法【ゆっくり解説】や、いわゆる「色変記事」2を読むとよいです。
また、AtCoder Novistepsのグレードで4Q、AtCoder Problemsでdifficulty250~300程度の問題を精進するのも良いかもしれません。
それに慣れれば、3Q(300~450diff)、2Q(450~600diff)のようにどんどん難しい問題に挑戦していくとよいです。
その頃にはもう、灰色でなくなっているかもしれませんね。
他にも、競技プログラミングの精進コンテンツはAtCoder Problemsだけでなく、AtCoder Novisteps、鉄則本、アルゴリズム×数学(米田本)、けんちょん本など、書籍・サイトも充実してきています。
最後に
ここまで読んで、実際に問題を解いてくださった方なら、もう「AtCoderを始める」段階は終わっています。
最初は問題文を読んでも何をすればよいのか分からなかったり、提出してもWAになったりすることが多かったと思います。しかし、問題を解いて、間違えて、解説を読んで、もう一度書いて……という経験を積むことで、少しずつ「この問題ならこう考えればよさそうだ」という感覚が身についていきます。
そして、すべての問題を自力で解く必要はありません。
分からなければ解説を読んで構いません。実装に失敗しても構いません。しばらくレーティングが上がらなくても構いません。
大切なのは、問題を解くことを続けることです。
このガイドが、あなたのAtCoder生活を始めるきっかけになっていれば幸いです。
それでは、コンテストでお会いしましょう。