---
title: Python AtCoder入門 第0講 はじめに
tags: 
author: [佐藤](https://docswell.com/user/aomori_sato)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/G78D5MXG7D.jpg?width=480
description: Python AtCoder入門 第0講 はじめに by 佐藤
published: September 19, 26
canonical: https://docswell.com/s/aomori_sato/KL3RR9-2026-09-19-175013
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/G78D5MXG7D.jpg)

Python AtCoder入門
第0講 はじめに
〜 AtCoderの世界へようこそ
Pythonの入門書を1冊終えた。
print も if も for も書ける。
では、次に何を作ればいいのでしょうか。
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/L7LMY38XJR.jpg)

文法を覚えた、その次へ
多くの人がここで立ち止まります。
文法は習った
でも何を作ればいいかわからない
作りたいものも特にない
そのうち for 文の書き方を忘れていく
そんな人におすすめしたいのが、
競技プログラミング（Competitive Programming）
です。
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/4EMYND63EW.jpg)

日本の競技プログラミングといえば
日本で競技プログラミングといえば、
AtCoder
です。
問題を読み、考え、プログラムを書き、自動採点に提出する。
この流れを繰り返しながら、Pythonを「使える道具」に変えていきます。
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/PER9D4PRJ9.jpg)

0-1 AtCoderとは何か
AtCoderは、日本語で参加できるプログラミングコンテストのサイトです。
毎週末のように、
ABC（AtCoder Beginner Contest）
が開催されています。
初心者から世界トップクラスの選手まで、同じ問題に同時に挑みます。
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/P7XQ123YEX.jpg)

コンテストの流れ
1. 決められた時刻に問題が公開される
2. 問題文を読む
3. 解き方を考える
4. プログラムを書く
5. コードを提出する
6. 自動採点の結果を確認する
7. AC なら正解
やることは、とてもシンプルです。
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/37K92MY47D.jpg)

コンテストに参加しなくても学べる
AtCoderは無料で利用できます。
また、必ずしも本番コンテストに参加する必要はありません。
過去問だけ解く
時間を気にせず考える
解説を読んで復習する
こうした練習だけでも十分に上達できます。
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/LJ3W4Y9DJ5.jpg)

ABCの問題構成
ABCの問題は、易しい順に並びます。
A問題
B問題
C問題
D問題
…
本書では、
A問題とB問題を確実に解けるようになること
を目標にします。
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/8JDKQ5G2EG.jpg)

A問題
A問題では、
入力を受け取る
簡単な計算をする
条件分岐をする
答えを出力する
といった処理が中心です。
数行で書ける問題も珍しくありません。
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/VEPKLG3L78.jpg)

B問題
B問題では、
N個のデータを処理する
リストを使う
文字列を操作する
条件に従ってシミュレーションする
といった処理が増えてきます。
本書で特に重点的に練習する領域です。
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/27VVQ6467Q.jpg)

C問題以降
C問題以降では、
効率のよい解き方
が重要になります。
たとえば、
全探索
累積和
二分探索
幅優先探索
動的計画法
などです。
ただし、本書ではまずその前段階を固めます。
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/5JGLWN127L.jpg)

レーティングと「色」
AtCoderでは、コンテストの成績に応じてレーティングが付きます。
色 レーティング
目安
灰色
0〜399 参加を始めたばかり
茶色 400〜799 A・B問題が安定
緑色 800〜1199 C問題も解ける
水色 1200〜1599 アルゴリズムを使いこなせる
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/47QY3QD9EP.jpg)

最初の目標は「茶色」
始めたばかりの人は灰色です。
最初の目標は、
茶色
です。
そして、灰色から茶色へ上がるために必要なのは、天才的なひらめきではありません。
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/KE4W1NGRJ1.jpg)

必要なのは「基礎を迷わず書ける力」
たとえば、
N個の数を受け取って、条件を満たすものを数える
この程度の処理を、
詰まらず
迷わず
バグらせず
数分で
書けるようになる。
まずは、そこを目指します。
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/L71YG5DVJG.jpg)

0-2 なぜ競技プログラミングをやるのか
競技プログラミングで身につく力は、
そのままプログラミング全般の土台になります。
特に重要なのは次の3つです。
1. 手が動くようになる
2. 効率を考えるようになる
3. 問題を解くこと自体が面白い
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/G7WGK5Y3E2.jpg)

① 「手が動く」ようになる
初心者と経験者の差は、
知識量だけではありません。
大きな差が出るのは、
頭の中の考えをコードにする速度
です。
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/4JZLZNXGE3.jpg)

繰り返すことで、コードが自然に出てくる
競技プログラミングでは、
問題を読む
解き方を考える
コードにする
提出する
という作業を何度も繰り返します。
その結果、 if や for 、リスト操作が自然に出てくるようになります。
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/YE6WZ84QEV.jpg)

読むだけでは身につかない
入門書を読んで理解することは大切です。
しかし、
「読んでわかる」と「書ける」は別物
です。
最終的に手を動かせるようにしてくれるのは、
自分で書いた量
です。
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/GE5MW9Q2E4.jpg)

② 「動けばいい」からの卒業
AtCoderには、
実行時間制限
があります。
多くの問題では、数秒以内に処理を終える必要があります。
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/9729Q2P1JR.jpg)

同じ答えでも、処理方法で差が出る
「10万個のデータを処理してください」
という問題で、
素直に書くと間に合わないことがあります。
そこで初めて、
同じ答えを、もっと少ない手数で出せないか？
と考えるようになります。
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/DJY4WY547M.jpg)

効率を考える習慣
この視点は、競技プログラミングだけのものではありません。
大量データを扱うとき、
無駄な処理を減らす
同じ計算を繰り返さない
適切なデータ構造を選ぶ
といった考え方につながります。
20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/V7NY9PN6E8.jpg)

③ 単純に、面白い
問題文を読む。
よくわからない。
小さな例を書いてみる。
手で答えを出してみる。
規則が見えてくる。
そして、
「あ、こうすればいいのか！」
となる。
21


# Page. 22

![Page Image](https://bcdn.docswell.com/page/YJ9P23RR73.jpg)

ACの気持ちよさ
ひらめきをコードにして提出する。
そして画面に、
AC
と表示される。
この達成感が、競技プログラミングの大きな魅力です。
しかも、遊んだ分だけプログラミングの力が残ります。
22


# Page. 23

![Page Image](https://bcdn.docswell.com/page/GJ8D5MWGJD.jpg)

0-3 なぜPythonで始めるのか
AtCoderでは多くの言語が使えます。
本書では、
Python
を使います。
灰色から茶色を目指す段階では、Pythonに大きなメリットがあります。
23


# Page. 24

![Page Image](https://bcdn.docswell.com/page/LJLMY3NXER.jpg)

Pythonは「書きたいこと」を短く書ける
たとえば、
「リストの中身を全部足す」
なら、
sum(A)
と書くだけです。
余計な記述が少ないため、
問題を考えることに集中できます。
24


# Page. 25

![Page Image](https://bcdn.docswell.com/page/47MYNDX37W.jpg)

データ構造が最初から揃っている
Pythonには、
リスト
辞書
集合
タプル
が標準で用意されています。
競技プログラミングでは、これらを非常によく使います。
25


# Page. 26

![Page Image](https://bcdn.docswell.com/page/P7R9D4NRE9.jpg)

標準ライブラリも強力
さらに、
collections
itertools
などの標準ライブラリを使うと、
面倒な処理を簡潔に書ける場合があります。
本書の後半では、こうした道具も扱います。
26


# Page. 27

![Page Image](https://bcdn.docswell.com/page/PJXQ12NY7X.jpg)

大きな整数でも壊れない
多くの言語では、
整数が扱える範囲を超えると、
オーバーフロー
が起こることがあります。
Pythonでは、非常に大きな整数もそのまま扱えます。
27


# Page. 28

![Page Image](https://bcdn.docswell.com/page/3JK92MN4JD.jpg)

Pythonなら巨大な整数も計算できる
たとえば、
2 ** 100
10 ** 1000
のような値も扱えます。
初学者にとって、
整数の上限をあまり気にしなくてよい
というのは大きなメリットです。
28


# Page. 29

![Page Image](https://bcdn.docswell.com/page/LE3W4YVDE5.jpg)

Pythonは遅い？
「Pythonは遅いのでは？」
と心配する人もいます。
しかし、A・B問題の学習段階では、
まず気にするべきなのは実行速度ではありません。
29


# Page. 30

![Page Image](https://bcdn.docswell.com/page/8EDKQ5827G.jpg)

まず速くするべきは「自分のコーディング」
重要なのは、
あなたがコードを書く速度
です。
入力をすぐ書ける
条件分岐を迷わない
リスト操作が自然に書ける
こうした力のほうが、最初はずっと重要です。
30


# Page. 31

![Page Image](https://bcdn.docswell.com/page/V7PKLG8LJ8.jpg)

0-4 本書の対象読者
本書は、次のような人を想定しています。
Pythonの入門書を1冊終えた
次に何をすればよいかわからない
AtCoderに登録したが入力でつまずいた
A問題は解けるがB問題で止まる
リストや辞書をなんとなく使っている
31


# Page. 32

![Page Image](https://bcdn.docswell.com/page/2JVVQ6N6JQ.jpg)

前提にする知識
次の内容は、すでに学んだことがある前提です。
変数
if
for
print
基本的な四則演算
完全な未経験者向けではありません。
32


# Page. 33

![Page Image](https://bcdn.docswell.com/page/5EGLWNK2JL.jpg)

本書のゴール
全16講を終えたとき、次の状態を目指します。
1. 入力形式を見ただけで受け取りコードを書ける
2. リスト・タプル・文字列・辞書・集合を使い分けられる
3. ABCのA・B問題を安定してACできる
33


# Page. 34

![Page Image](https://bcdn.docswell.com/page/4JQY3QN97P.jpg)

本書ではアルゴリズムを扱わない
本書では、
本格的なアルゴリズム学習は扱いません。
なぜなら、
その前に身につけるべきことがあるからです。
34


# Page. 35

![Page Image](https://bcdn.docswell.com/page/K74W1N3RE1.jpg)

「解法を理解する」と「コードにする」は別
解説を読んで、
なるほど、そう解けばいいのか
と理解できても、
それをコードにできなければACにはなりません。
初心者がつまずきやすいのは、
理解した解法をコードにする段階
です。
35


# Page. 36

![Page Image](https://bcdn.docswell.com/page/LJ1YG51VEG.jpg)

まずPythonを「道具」にする
本書では、
Pythonを迷わず使えるようにすること
だけに集中します。
ここが固まっていれば、
その後のアルゴリズム学習はかなり楽になります。
36


# Page. 37

![Page Image](https://bcdn.docswell.com/page/GJWGK58372.jpg)

0-5 本書の構成
本書は、4つの部で構成します。
第1部：問題を解く準備
第2部：データをまとめて扱う
第3部：道具を増やす
第4部：総仕上げ
37


# Page. 38

![Page Image](https://bcdn.docswell.com/page/4EZLZN8G73.jpg)

第1部 問題を解く準備
対象：
第1講〜第4講
扱う内容：
入出力
四則演算
条件分岐
ループ
AtCoderで問題を解くための基本装備を整えます。
38


# Page. 39

![Page Image](https://bcdn.docswell.com/page/Y76WZ8PQ7V.jpg)

第2部 データをまとめて扱う
対象：
第5講〜第9講
扱う内容：
リスト
タプル
内包表記
文字列
2次元リスト
関数
B問題で必要になる処理を身につけます。
39


# Page. 40

![Page Image](https://bcdn.docswell.com/page/G75MW9K274.jpg)

第3部 道具を増やす
対象：
第10講〜第14講
扱う内容：
辞書
集合
collections
itertools
ソート
クラス
正しい道具を選び、短く読みやすいコードを書けるようにします。
40


# Page. 41

![Page Image](https://bcdn.docswell.com/page/9J29Q2W1ER.jpg)

第4部 総仕上げ
対象：
第15講
実際のA問題・B問題を使って、
実戦演習
WAの確認方法
デバッグ
提出前チェック
を行います。
41


# Page. 42

![Page Image](https://bcdn.docswell.com/page/DEY4WYL4JM.jpg)

読み進め方
基本的には、
第1講から順番に
進めてください。
各講は、前の講で学んだ内容を土台にしています。
42


# Page. 43

![Page Image](https://bcdn.docswell.com/page/VJNY9P4678.jpg)

各講の構成
各講は、おおむね次の流れです。
1. 解説
2. コード例
3. 章末まとめ
4. 練習問題
5. 解答
コード例は、そのまま実行できる形で提示します。
43


# Page. 44

![Page Image](https://bcdn.docswell.com/page/YE9P23QRJ3.jpg)

コードには名前をつける
本書では、コード例にファイル名をつけます。
たとえば、
hello.py
for.py
input.py
のようにします。
どのプログラムを実行しているのか、迷わないようにするためです。
44


# Page. 45

![Page Image](https://bcdn.docswell.com/page/GE8D5MGGED.jpg)

練習問題は必ず自分で解く
読むだけでは、なかなか身につきません。
必ず、
自分でコードを書く
ようにしてください。
解答を見る前に、まずは一度自力で挑戦しましょう。
45


# Page. 46

![Page Image](https://bcdn.docswell.com/page/LELMY3GX7R.jpg)

0-6 ジャッジ結果を知る
AtCoderでは、提出後に自動採点されます。
よく見る結果は次の5つです。
AC
WA
TLE
RE
CE
46


# Page. 47

![Page Image](https://bcdn.docswell.com/page/4JMYNDQ3JW.jpg)

AC
Accepted
正解
すべてのテストケースを通過しています。
制限時間内に、正しい答えを出せています。
47


# Page. 48

![Page Image](https://bcdn.docswell.com/page/PJR9D48R79.jpg)

WA
Wrong Answer
不正解
出力結果が正解と一致していません。
原因は、解法ミスだけとは限りません。
48


# Page. 49

![Page Image](https://bcdn.docswell.com/page/PEXQ128YJX.jpg)

WAのよくある原因
解き方そのものが間違っている
特定ケースだけずれる
N = 1 で壊れる
出力形式が違う
Yes と YES を間違える
余計な文字を出力している
出力形式も厳密に確認します。
49


# Page. 50

![Page Image](https://bcdn.docswell.com/page/3EK92MK4ED.jpg)

TLE
Time Limit Exceeded
実行時間制限超過
処理が時間内に終わっていません。
答えの考え方や処理方法を見直す必要があります。
50


# Page. 51

![Page Image](https://bcdn.docswell.com/page/L73W4YZD75.jpg)

RE
Runtime Error
実行時エラー
プログラムが途中で停止しました。
Pythonでは、いくつか典型的なエラーがあります。
51


# Page. 52

![Page Image](https://bcdn.docswell.com/page/87DKQ5R2JG.jpg)

よくあるRE
IndexError
ZeroDivisionError
ValueError
たとえば、
A[N]
のようにリストの範囲外へアクセスすると、 IndexError になります。
52


# Page. 53

![Page Image](https://bcdn.docswell.com/page/VJPKLGWLE8.jpg)

CE
Compilation Error
Pythonでは主に、
インデントのずれ
括弧の閉じ忘れ
文法ミス
などが原因です。
提出前に一度実行するだけでも、多くを防げます。
53


# Page. 54

![Page Image](https://bcdn.docswell.com/page/2EVVQ686EQ.jpg)

WAやREは学習材料
最初は、
WAやREが続いて当然
です。
WAは、
見落としているケースがありますよ
というフィードバックだと考えてください。
54


# Page. 55

![Page Image](https://bcdn.docswell.com/page/57GLWN52EL.jpg)

TLEもヒントになる
TLEは、
もっと効率のよい書き方がありますよ
というサインです。
エラーや不正解も、すべて学習材料になります。
55


# Page. 56

![Page Image](https://bcdn.docswell.com/page/4EQY3QZ9JP.jpg)

0-7 提出環境とテンプレート
AtCoderでは、提出するときに言語を選びます。
Pythonでは主に、
CPython
PyPy3
が使われます。
56


# Page. 57

![Page Image](https://bcdn.docswell.com/page/KJ4W1NDR71.jpg)

CPython
公式のPython実装
普段のPython環境に近い動きをします。
学習目的でも、そのまま使えます。
57


# Page. 58

![Page Image](https://bcdn.docswell.com/page/LE1YG5ZV7G.jpg)

PyPy3
PyPy3は、Pythonコードを高速に実行できることがあります。
特に単純なループ処理で有利になる場合があります。
本書では、基本的にPyPy3を使う方針にします。
58


# Page. 59

![Page Image](https://bcdn.docswell.com/page/GEWGK593J2.jpg)

コードテストを使う
AtCoderには、
コードテスト
があります。
ブラウザ上でコードを実行できます。
手元に開発環境を作らなくても練習できます。
59


# Page. 60

![Page Image](https://bcdn.docswell.com/page/47ZLZN9GJ3.jpg)

提出前の習慣
提出する前に、
1. 入力例を入れる
2. 実行する
3. 出力例と一致するか確認する
4. 問題なければ提出する
この習慣だけで、無駄なWAはかなり減ります。
60


# Page. 61

![Page Image](https://bcdn.docswell.com/page/YJ6WZ8KQJV.jpg)

最初のプログラム
ファイル名： double.py
標準入力から整数を1つ受け取り、
2倍して出力します。
# double.py
# Read a single integer from standard input
N = int(input())
# Calculate the answer
answer = N * 2
# Print the answer to standard output
print(answer)
61


# Page. 62

![Page Image](https://bcdn.docswell.com/page/GJ5MW9P2J4.jpg)

入力例
入力：
5
出力：
10
たったこれだけです。
62


# Page. 63

![Page Image](https://bcdn.docswell.com/page/LE3W4Y31E5.jpg)

AtCoderの基本形
ほとんどの問題は、
入力 → 計算 → 出力
という形です。
難しい問題でも、この骨格は変わりません。
63


# Page. 64

![Page Image](https://bcdn.docswell.com/page/8EDKQ54K7G.jpg)

難しくなるのは「計算」の部分
最初と最後は、ほぼ同じです。
入力を受け取る
答えを出力する
難しくなるのは、その間の
「計算する」部分
です。
64


# Page. 65

![Page Image](https://bcdn.docswell.com/page/V7PKLGM3J8.jpg)

コメントを英語で書く理由
本書のコード例では、
コメントを英語で書きます。
学習段階では、コードの意図を言葉にすることが理解につながります。
65


# Page. 66

![Page Image](https://bcdn.docswell.com/page/2JVVQ69NJQ.jpg)

英語に慣れておく
プログラミングでは、
コード
ドキュメント
ライブラリ名
エラーメッセージ
の多くが英語です。
短いコメントを書く習慣だけでも、抵抗感は少しずつ減っていきます。
66


# Page. 67

![Page Image](https://bcdn.docswell.com/page/5EGLWNZ5JL.jpg)

0-8 挫折しないためのマインドセット
最後に、大切な心構えを3つ紹介します。
1. 20分考えてわからなければ解説を見る
2. 意地悪な入力を自分で考える
3. 人と比べず、昨日の自分と比べる
67


# Page. 68

![Page Image](https://bcdn.docswell.com/page/4JQY3QLL7P.jpg)

① 20分考えてわからなければ解説を見る
一つの問題に何日も悩み続ける必要はありません。
初学者の段階では、
知らない書き方を自力で発明するのは難しい
からです。
68


# Page. 69

![Page Image](https://bcdn.docswell.com/page/K74W1ND5E1.jpg)

解説を見ることは悪くない
次の流れがおすすめです。
1. 問題を読む
2. 小さな例を書く
3. 20分ほど考える
4. 手が止まったら解説を見る
5. 解説を閉じる
6. 最初から自分で書き直す
7. ACを取る
69


# Page. 70

![Page Image](https://bcdn.docswell.com/page/LJ1YG5Z2EG.jpg)

成長するのは「書き直したとき」
解説を読んで、
なるほど
で終わってはいけません。
理解したあと、
自分の手で最初から書き直す
ことが重要です。
70


# Page. 71

![Page Image](https://bcdn.docswell.com/page/GJWGK59272.jpg)

② 意地悪な入力を自分で考える
提出前に、自分のコードを疑ってください。
たとえば、
N = 1
答えが0
答えがマイナス
すべて同じ値
最小値
最大値
などを試します。
71


# Page. 72

![Page Image](https://bcdn.docswell.com/page/4EZLZN9473.jpg)

出力形式も確認する
特にAtCoderでは、
問題文と一字一句同じ形式で出力する
ことが大切です。
Yes
YES
yes
は別物です。
72


# Page. 73

![Page Image](https://bcdn.docswell.com/page/Y76WZ8KG7V.jpg)

インデックスにも注意
Pythonのリストは、
0始まり
です。
人間が数える「1番目」と、
Pythonの A[0]
を混同しないようにしましょう。
73


# Page. 74

![Page Image](https://bcdn.docswell.com/page/G75MW9PX74.jpg)

③ 人と比べない
AtCoderには順位表があります。
SNSを見ると、中高生が高速で問題を解いていることもあります。
しかし、比べる必要はありません。
74


# Page. 75

![Page Image](https://bcdn.docswell.com/page/9J29Q26QER.jpg)

比べる相手は昨日の自分
見るべきなのは、
先週30分かかった問題が10分で解けた
昨日書けなかったコードが今日は書けた
TLEだったコードがACになった
といった変化です。
75


# Page. 76

![Page Image](https://bcdn.docswell.com/page/DEY4WY9YJM.jpg)

小さな成長を積み重ねる
競技プログラミングは、
正しい練習を積めば少しずつ上達する
ゲームです。
一歩ずつ積み重ねれば、
やがて茶色に届きます。
76


# Page. 77

![Page Image](https://bcdn.docswell.com/page/VJNY9PLR78.jpg)

第0講まとめ
この講で伝えたかったことは、次の5つです。
1. AtCoderはPython練習に向いている
2. 最初の目標はA・B問題
3. Pythonの基礎を迷わず書ける力が重要
4. WAやREも学習材料
5. コードには hello.py のように名前をつける
6. 解説を読んだら自分で書き直す
77


# Page. 78

![Page Image](https://bcdn.docswell.com/page/YE9P234ZJ3.jpg)

次回予告
次はいよいよ、
第1講 入出力
です。
すべての問題の入り口である、
「入力を受け取る」
ところから徹底的に練習します。
78


