キッズプログラミングスクール8x9 東京校

プログラミングコース / 競技プログラミング

「解けた!」の気持ちよさを、
知ってほしい。

問題を読んで、考えて、書いて、提出して、正解する。競技プログラミングには、パズルを解くような楽しさがあります。
プログラミング未経験から、AtCoder などのコンテストに挑戦できるところまで。その楽しさを伝えるのがこのカリキュラムの目標です。

31ステップすべてオリジナル問題
5フェーズ全探索から動的計画法まで
AtCoderへ修了後の挑戦先
無料体験レッスンに申込む

WHY COMPETITIVE PROGRAMMING

速く書くより、うまく考える。

競技プログラミングは、決められた時間の中で、与えられた問題を解くプログラムを書く競技です。日本では AtCoder のコンテストが毎週のように開かれ、小学生から社会人まで参加しています。

このカリキュラムが大切にしているのは、「どう考えれば解けるか」。ぜんぶ試す、半分にしぼる、つながりをたどる、前の答えをおぼえておく。
こうした考え方の「型」を一つずつ身につけると、はじめて見る問題にも手が出せるようになります。

01

考え方の型を順番に

全探索 → 二分探索 → グラフ探索 → 動的計画法。競プロで必要になる考え方を、やさしい順に積み上げます。

02

すべてオリジナル問題

迷路、リュック、ことば探し。子どもがイメージしやすい題材で、8x9が問題から作りました。

03

コンテストへの入口

ゴールはカリキュラムの修了ではなく、AtCoder などの本番のコンテストに自分から挑戦したくなることです。

FROM THE TEXTBOOK

実際の教材から

問題はすべてオリジナル。入力を受け取って答えを出力する、コンテストと同じ形で解きます。

数列 [3,1,4,1,5,9] を半分ずつに分け、マージしながら [1,1,3,4,5,9] に並べていく図
教材の図。分けて、並べて、合わせる流れを目で追えます。
競技プログラミング ステップ22「大きな問題を小さく分ける(分割統治)」

大きな問題を、小さく分けて解く

数列の最大値を、左半分と右半分に分けて求めます。「分けて、解いて、合わせる」分割統治は、マージソートをはじめ多くのアルゴリズムの土台になる考え方です。

main.py
def find_max(numbers, left, right):
    # ベースケース: 要素が1個
    if left == right:
        return numbers[left]

    # 分ける
    mid = (left + right) // 2
    left_max = find_max(numbers, left, mid)
    right_max = find_max(numbers, mid + 1, right)

    # 合わせる
    if left_max > right_max:
        return left_max
    else:
        return right_max

n = int(input())
a = list(map(int, input().split()))
print(find_max(a, 0, n - 1))

CURRICULUM / Python

競技プログラミングへの道
— 31ステップで、AtCoder の入口へ。

プログラミング未経験からスタートし、Python の基本 → 全探索 → 二分探索 → グラフ探索 → 動的計画法へと、段階的にステップアップします。
問題はすべてオリジナル。「コードの書き方」よりも「どう考えれば解けるか」を重視しています。

PHASE 1

Python の基本

ステップ 1〜11
  1. 01
    プログラミングの基礎

    オリエンテーション。プログラムを書いて動かす

    基本
  2. 03
    キーボードから読みとろう

    入力と型変換。競プロの問題の読み方

    入力
  3. 07
    リストをあやつろう

    スライス・ソート・内包表記

    リスト
  4. 11
    マスをぜんぶ調べよう

    二重ループで、マス目の地図からスタートとゴールを見つける

    二重ループ
PHASE 2

考え方の基本

ステップ 12〜16
  1. 12
    プログラムの「速さ」を測ろう

    計算量。間に合うかどうかを、書く前に見積もる

    計算量
  2. 13
    ぜんぶためせば答えが出る!

    全探索

    全探索
  3. 15
    えらぶ?えらばない?

    bit 全探索

    全探索
  4. 16
    ならべかえて一番いいのを選ぶ

    ソートと貪欲法

    貪欲法
PHASE 3

さがすテクニック

ステップ 17〜22
  1. 17・18
    半分にわけてさがす魔法

    二分探索(基本・応用)

    二分探索
  2. 19
    自分で自分をよぶ関数

    再帰

    再帰
  3. 21
    合計のメモで一瞬で答える

    累積和

    累積和
  4. 22
    大きな問題を小さく分ける

    分割統治

    分割統治
PHASE 4

つながりをたどる

ステップ 23〜27
  1. 23
    つながりの地図をつくろう

    グラフの基本

    グラフ
  2. 24・25
    近い順にしらべる探検

    幅優先探索(BFS)と深さ優先探索(DFS)

    探索
  3. 26
    迷路を最短で抜けろ!

    BFS / DFS の応用

    最短経路
  4. 27
    枝分かれの地図

    木構造

    木
PHASE 5

おぼえて解く

ステップ 28〜31
  1. 28
    前の答えをおぼえておく作戦

    動的計画法(DP)

    DP
  2. 29
    リュックに何を入れる?

    ナップサック問題

    DP
  3. 30
    2つの言葉のにているところ

    文字列の DP

    DP
  4. 31
    おぼえる作戦チャレンジ

    DP の総合演習

    総合

IN THE REAL WORLD

この力が、使われている場所

「速く、正しく解く」ためのアルゴリズムは、毎日使うサービスの裏側で動いています。

カーナビや乗換案内

たくさんの駅や道の中から、最短の経路を一瞬で探すのはアルゴリズムの力です。

検索エンジン

膨大なデータの中から速く探し、並べ替える。探索やソートがその土台です。

IT企業の採用試験

エンジニアの採用では、アルゴリズムの問題を解くコーディング試験がよく行われています。

プログラミングコンテスト

AtCoder では定期的にコンテストが開かれ、中高生向けには情報オリンピックもあります。

OTHER TRACKS

プログラミングコースの、ほかの道

プログラミングコースには、興味に合わせて選べる4つの道があります。どの道から始めるかは、体験レッスンでお子さまの様子を見ながらご相談ください。

FOR PARENTS

保護者の方へ

プログラミング未経験でも大丈夫ですか?

はい。最初の11ステップで Python の基本(入力・条件分岐・ループ・リスト・関数・辞書)を学んでから、競技プログラミングの考え方に進みます。

算数・数学が得意でないと難しいですか?

算数が得意だと有利な場面はありますが、このカリキュラムで扱うのは計算力より「考え方」です。問題を小さく分けて、試して、確かめる。その積み重ねを大切にしています。

どのコースで受けられますか?

プログラミングコース(小学校高学年〜・月2回・90分)で取り組みます。どの道から始めるか、どこまで進むかは、お子さまの興味と進み具合に合わせて講師と決めていきます。まずは無料体験レッスンでご相談ください。

考えて、解けた。その瞬間を、何度でも。

競技プログラミングの楽しさを知るところから、はじめてみませんか。

無料体験レッスンに申込む