JOI 2026/2027 一次予選(第1回)をプログラミング塾講師が振り返る|参加者数・得点分布・各問題の感想

2026-10-04

情報オリンピック
JOI
一次予選
過去問
講師コラム
星出 遼汰郎

代表講師 / カリキュラム監修

星出 遼汰郎(ほっしー)

中学生・高校生向けのプログラミング学習サービス「HaruCoder」を運営しています。指導歴は5年以上、これまでに100人以上の生徒を教えてきました。プログラミングの楽しさ、そして「考えることそのものの楽しさ」を伝えることを大切にしています。


2026年9月12日(土)に、第26回日本情報オリンピック(JOI 2026/2027)の一次予選 第1回が行われました。 9月23日には公式から問題文・解説・解答例・統計情報が公開されています。

僕は普段、HaruCoder で中学生・高校生に JOI 対策を教えています。毎年この時期は、生徒と一緒に一次予選の問題を解き直して振り返るのが恒例です。

結論から言うと、今年の第1回は例年より難しい回でした。 特に、基本問題の最後にあたる C問題が大きな壁 になりました。最後の F問題は、アルゴリズムの考察が必要な二次予選並みの問題 でした。

この記事では、まず公式の統計からその根拠を確認し、そのあと各問題を講師の目線で振り返ります。最後に、第2回(10月25日)に向けて何をすればいいかをまとめます。

「そもそもJOIって何?」という方は、先に情報オリンピック(JOI)とは?をご覧ください。

今年からの新しい形式(6問・600点満点、300点で予選Bランク、500点で二次予選進出)については、情報オリンピック(JOI)の難易度を完全解説で詳しく説明しています。

参加者数と得点分布から見る「難しさ」

第1回の参加者は 1,621人 でした(応募資格を満たし、競技時間内に1回以上提出した人の数)。 得点分布は次のとおりです。

得点人数累計累計の割合
600点138人138人8.5%
500〜599点187人325人20.0%
400〜499点189人514人31.7%
300〜399点218人732人45.2%
200〜299点372人1,104人68.1%
100〜199点296人1,400人86.4%
1〜99点0人1,400人86.4%
0点221人1,621人100%

出典:JOI 2026/2027 一次予選競技課題

※ 二次予選進出などの判定は加点後の成績で行われるため、この表の人数がそのまま進出者数になるわけではありません。

予選Bランクに届いた人は、昨年の63.5%から45.2%へ

昨年(JOI 2025/2026)の第1回と比べてみます。

昨年 第1回(4問)今年 第1回(6問)
参加者数1,658人1,621人
予選Bランク1,053人(63.5%)732人(45.2%)

参加者数はほぼ同じなのに、予選Bランクに届いた人の割合は約18ポイントも下がっています。

「形式が変わったのだから当然では?」と思うかもしれません。ですが、公式の発表では、今年の前半3問(A〜C問題)は昨年までの前半3問と同程度の難易度とされています。前半3問をすべて解けば300点でBランクなので、基準そのものは昨年の「4問中3問正解」と大きくは変わっていない はずです。それでもここまで割合が下がったのは、問題そのものが例年より難しかったからだと考えています。

もう一つ目立つのが、いちばん人数が多いのが200点台(372人) だということです。2問は解けたけれど、あと1問が取れずにBランクを逃した人がこれだけいます。この「あと1問」がどこだったのかは、問題ごとの結果を見るとはっきりします。

問題ごとの結果

問題題名区分平均点満点者満点率
A問題ノート基本86.1点1,395人86.1%
B問題最小除外値基本67.6点1,096人67.6%
C問題スポーツ大会基本36.9点598人36.9%
D問題倍数ペア応用39.0点633人39.0%
E問題JOIブロック応用22.6点351人21.7%
F問題お菓子配り応用9.6点140人8.6%

A〜D問題は小課題が1つだけで、点数は0点か100点のどちらかです。部分点がついたのはE問題とF問題だけでした。

C問題が大きな壁になった

この表でいちばん目を引くのは、基本問題のC問題より、応用問題のD問題のほうが満点者が多い ことです。

昨年の第1回と、A〜D問題の満点率を並べてみるとさらにはっきりします。

昨年 第1回今年 第1回
A問題84.7%86.1%
B問題81.2%67.6%
C問題63.9%36.9%
D問題32.0%39.0%

A問題とD問題は昨年とほぼ同じか、むしろ上がっています。一方で C問題は約27ポイントも下がりました。原因は例年通りの「言われたとおりに実装する基本問題」ではなく、「考察が必要な応用問題」だったことです。詳しくは「各問題の振り返り」をご参照ください。

F問題はアルゴリズムの考察が必要だった

もう一つの山場がF問題です。満点は140人(8.6%)、平均点は9.6点でした。

F問題の得点人数
100点140人
20〜79点16人
1〜19点97人
0点1,368人

E問題まで満点獲得できれば二次予選に出場できるという性質上、F問題は「すでに二次予選出場が決まった子たち向けの問題」となるので、難易度が跳ね上がります。 当塾からは今年18人の生徒がJOIに挑戦しましたが、F問題の満点までたどり着いたのはたったの一人でした。

各問題の振り返り(講師の目線で)

各問題について、内容と「生徒がつまずきやすいところ」をまとめます。問題文はAtCoderの過去問ページで実際に提出して試せるので、ぜひ解いてみてください。

A問題「ノート」

A冊セットのノートがB組と、単品のノートがC冊あるとき、ノートが全部で何冊あるかを求める問題です。A × B + C を計算して出力すれば正解です。

講師の目線: 変数・四則演算・入出力ができれば解ける、例年どおりの1問目です。 それでも満点率は86.1%で、参加者の7人に1人は解けていません。原因の多くは、問題を解く力というより、「入力の受け取り方が分からない」「提出言語を間違える」といった 本番の環境に慣れていないこと だと思います。 本番前に一度は練習問題で提出まで通しておくだけで防げるので、ここは確実に取りたいところです。

B問題「最小除外値」

0以上の整数AとBが与えられ、AでもBでもない0以上の整数のうち最小のものを求める問題です。答えは0・1・2のどれかなので、条件分岐で場合分けすれば解けます。

講師の目線: おちついて対処すれば難しい問題ではありませんが、沼にハマるとなかなか抜け出せない問題です。一見複雑そうな問題ですが、よくよく整理すると「答えは0,1,2のどれかになる」ということに気付けると思います。あとは単純なif,else ifの条件分岐ですね。 こういう問題では、入力例を自分の手で追ってみる ことが大切です。「0と4なら答えはなにかな?」「1と0なら?」と具体例をいくつか書き出すと、答えが0・1・2しかないことに気づくでしょう。 問題文の言葉が難しそうでも、具体例に落とせば解ける。これは授業でも繰り返し伝えていることです。

C問題「スポーツ大会」

32チームが参加するトーナメント(全5ラウンド)で、準優勝するチームの番号を求める問題です。試合では強さが大きいほうが必ず勝ちます。

講師の目線: 今回いちばん差がついた問題です。 問題文を素直に読むと、「1ラウンドずつ試合をして、勝ったチームを並べ直して、また試合をして……」と全ラウンドを再現したくなります。もちろんそれでも解けますが、配列の詰め直しや番号の管理で混乱しやすく、80分の本番で書き切るのは意外と大変です。

トーナメント表の性質に注意して一歩引いて考えると、決勝で戦うのは「チーム1〜16の中で最も強いチーム」と「チーム17〜32の中で最も強いチーム」 となることがわかります。この2チームのうち弱いほうが準優勝なので、繰り返しで最大値を2回求めるだけで解けます。

この問題で問われていたのは、「書き始める前に、答えがどう決まるかを考える」 力です。プログラミングを始めたばかりの生徒ほど、問題文を読んだらすぐに書き始めます。でも、紙に小さいトーナメント表(4チームや8チーム)を書いて「決勝に残るのはどんなチームか」を考えてみると、ずっと簡単な問題に変わります。 講師としては、新形式の「基本問題」にこういう考える力を見る問題が入ってきたことに、出題側のはっきりした意図を感じました。

D問題「倍数ペア」

長さNの数列Aについて、i < j かつ A_i が A_j の倍数になっている組 (i, j) の個数を数える問題です。N ≦ 1,000なので、二重ループですべての組を調べれば間に合います。

講師の目線: 区分は応用問題ですが、中身は昨年までのD問題と同じ「配列+二重ループ」の典型問題です。二重ループを練習してきた生徒にとっては、むしろC問題より取りやすかったと思います。満点者がC問題より多いのも納得です。

注意したいのは、「AがBの倍数」の向き です。A_i % A_j == 0 と A_j % A_i == 0 を取り違えると、入力例1で合わなくなります。入力例で答えが合わないときは、どちらの向きで割っているかを確かめましょう。 また、「i < j」の条件を、二重ループの範囲(j を i + 1 から始める)でそのまま表現できるかも、二重ループを使いこなせているかの分かれ目です。

E問題「JOIブロック」

J・O・I・Gからなる文字列Sが、JOI・IOI・JOIG の3種類をつなげて作れるかを判定する問題です。Sの長さは最大100,000で、ここから部分点のある問題になります。

小課題条件配点
1SはOとIだけ20点
2SはJ・O・Iだけ20点
3Sの長さが20以下20点
4追加の制約なし40点

満点への道筋は、Sを先頭から順に読み、今の文字から始まる部品を当てはめていく 方法です。Iから始まるなら IOI しかありません。Jから始まるなら JOI か JOIG で、直後の文字がGかどうかで決まります。

講師の目線: 個人的には、C問題よりもこのE問題の方が簡単なんじゃないかと思っています。(それくらいC問題は難しかったんです!) 繰り返しの添え字管理や、文字列の扱いに慣れていれば素直に解ける問題ですね。ただ、「JOI」を見つけた時点でブロックを切ってしまうと、「JOIG」だった時に困るため、条件分岐の順番的な難しさはあったかもしれません。

F問題「お菓子配り」

N人の友達に、アイスクリーム(X個)かチョコレート(Y個)のどちらかを1個ずつ配ります。友達iはアイスで A_i、チョコで B_i の嬉しさを得るので、嬉しさの合計の最大値を求める問題です。Nは最大200,000です。

小課題条件配点
1N = 15点
2X = N、Y = 05点
3X = N、Y = N5点
4X = N、Y = 125点
5X + Y = N25点
6N ≦ 1010点
7追加の制約なし25点

考え方は、まず全員にアイスを配り、「アイス→チョコに変えると嬉しさが B_i - A_i 増える」人から順に入れ替えていく というものです(ソート+貪欲法)。入れ替える人数は N - X 人以上 Y 人以下でなければならないので、その範囲の中で合計が最大になるところを探します。

講師の目線: 上で書いたとおり、満点は140人(8.6%)と、さすがに二次予選レベルの問題でした。 ただ、1〜19点の人が97人 いることにも注目したいです。満点は取れなくても、小課題1〜3(N = 1、全員アイス、どちらでも選べる)の5点ずつを拾いに行った人が多かったということです。

実際、当塾から参加した生徒も、部分点で10点は取れたという子が何人かいました。 最後の問題だからと読まずに諦めるのではなく、小課題の一覧だけは必ず目を通すというのも、部分点があるタイプの問題では大切な姿勢です。

今回出てきた「貪欲法」という考え方は、二次予選でも頻出の考え方です。貪欲法については貪欲法(グリーディ法)とは?でも詳しく解説しています。

講師として感じたこと

今回の第1回を振り返って、講師として一番強く感じたのは、一次予選が「文法を知っているか」から「考えて使えるか」を見る試験に変わってきた ということです。

特に、C問題などの「予選Bランクレベルの問題」で応用的な問題が出てきたのは、来年に向けての指導・勉強内容に大きくかかわってくるなと感じています。

ただ文法を覚えるだけではなく、「なぜそう解けるのか」を自分の言葉で説明できるところまで持っていく。新形式の一次予選は、その積み重ねがそのまま点数に表れる試験になったと感じました。

第2回に向けて

一次予選の第2回は 2026年10月25日(日)14:00〜15:20 に行われます。 一次予選に複数回参加した場合は、成績の最大値が使われる ので、第1回で思うような点が取れなかった人も、もう一度チャンスがあります。

講師として、第2回までにやってほしいことは次の3つです。

  1. 前半3問を確実に取れるようにする。 C問題の満点率が4割を切ったように、「基本問題」でも油断はできません。書き始める前に、小さい例を紙に書いて答えの決まり方を考える練習をしましょう。
  2. 二重ループの問題を得意にする。 D問題は昨年までのD問題と同じく、配列と二重ループの問題です。過去のD問題を何問か解いておけば、300点がぐっと近づきます。
  3. 後半の問題でも、小課題を1つずつ拾う。 E・F問題の小さい小課題で20点・30点を積み上げれば、500点の二次予選ラインが見えてきます。本番では、後半の問題も小課題の一覧だけは必ず読みましょう。

一次予選のこれまでの問題の難易度や、二次予選との違いについては、こちらの記事でまとめています。

情報オリンピック(JOI)の難易度を完全解説|段階別の対策とAtCoderとの対応
情報オリンピック(JOI)の難易度を完全解説|段階別の対策とAtCoderとの対応情報オリンピック(JOI)の難易度を一次予選・二次予選・本選の段階ごとに解説。AtCoderレーティングとの対応や、各段階で必要な知識・スキルを具体的な問題例とともに紹介します。
harucoder.jp/blog/joi-difficulty-guide

関連リンクまとめ


HaruCoderについて

中学生・高校生向けのオンライン競技プログラミング教室です。
情報オリンピック(JOI)一次予選突破率9割以上、AtCoder水色講師による個別指導。
月謝14,800円〜・入会金0円・オンライン全国対応。

星出 遼汰郎
授業で会えるのを楽しみにしてます!