2025年度共通テスト「情報Ⅰ」第3問は、プログラミングが苦手な人ほど差がついた問題でした。
テーマは文化祭のゲームコーナーの「待ち時間」をシミュレーションするプログラム。
一見すると難しそうですが、実はやっていることはシンプルです。
現実の流れをそのまま数式とプログラムに落とすだけ。
この記事では、
- 問題文が言っている「現実のルール」を整理
- それをどうプログラムに変換するのか
- なぜその書き方が最適なのか(アルゴリズム)
を、高校生向けに一つずつ丁寧に解説します。
1. まずは状況整理|この問題でやっていることは何?
この問題は、文化祭のゲームコーナーに来るお客さんの流れをシミュレーションしています。
大事な時刻はこの3つだけ。
| 名前 | 意味 |
|---|---|
| 到着時刻 | 列に並んだ時間 |
| 開始時刻 | ゲームを始めた時間 |
| 終了時刻 | ゲームが終わった時間 |
ここから、最重要公式が生まれます。
待ち時間 = 開始時刻 − 到着時刻
これがわからなくなると、全て崩れます。
逆に言えば、これさえ理解できれば半分勝ちです。
2. 図を見て手計算する|アルゴリズムの正体をつかむ
プログラムを書く前に、必ずやってほしいことがあります。
それは 「図からルールを見抜く」こと。
ガントチャート(図1)を見ると、客がゲームを始められる時刻は次のどちらか遅い方です。
- 自分が到着した時刻
- 前の人が終わった時刻
つまり、こうなります。
開始時刻 = 最大値(到着時刻, 前の人の終了時刻)
これがこの問題のアルゴリズムです。
空欄ア・イ・ウを計算してみよう

- 3人目(ア)
到着4分、前の終了6分 → 開始6分 → 終了9分 - 5人目(イ)
到着11分、前の終了13分 → 待ち時間2分 - 6人目(ウ)
到着12分、前の終了16分 → 待ち時間4分
手で追える人は、プログラムでも必ず追えます。
3. プログラム解説|配列と添字が分かれ道
図2のプログラムでは、客のデータを配列(リスト)で管理しています。
ここで混乱する人が多いポイントは 添字(インデックス)。
i→ 今の客i-1→ 一つ前の客
これを間違えると、全てズレます。
空欄の正体(ここは暗記じゃなく理解)

- 開始時刻
Kaishi[i] = 最大値(Touchaku[i], Shuryou[i-1]) - 終了時刻
Shuryou[i] = Kaishi[i] + taiken - 待ち時間
Machi[i] = Kaishi[i] - Touchaku[i]
「式に意味がある」ことを意識しましょう。
覚える必要はありません。導けるようになることが大事。
4. 問3の本質|計算回数を減らす思考(アルゴリズム)
問3は、体験時間を1〜15分まで変えながら、
最長待ち時間が10分を超えない最大値
を探す問題です。
ここで重要なのが 「無駄な計算をしない」 発想。
なぜ途中で止めていいの?
体験時間が長くなるほど、待ち時間は増えます。
つまり、10分を超えたらそれ以上調べる意味はありません。
この考え方が アルゴリズム的思考 です。
修正後プログラムの考え方

- 空欄[シ]:
saichou < 10 - 空欄[ス]:
初期値は繰り返しの前で設定する - 空欄[セ]:
taikenは、外側のループで一つずつ増やす - 空欄[ソ]:
実行回数は 5回(1〜5分まで)
ここが分かる人は、プログラミング問題で必ず強いです。
5. まとめ|満点を取るために絶対外せない3つ

この問題の核心は、次の3点です。
① 現実 → 数式に変換できるか
開始時刻の決定は 最大値の関数。
これは現実のルールそのもの。
② 配列の添字を正確に追えるか
i と i-1 を混同しないこと。
③ 無駄を減らす発想を持てるか
「10分を超えたら終わり」という判断ができるか。
共通テスト情報Ⅰで9割を超える人の思考
満点を取る人は、プログラムを
「暗号」ではなく「現実の再現」として読んでいます。
もし第3問が苦手だった人は、
図 → 数式 → プログラム
この順番で考えるクセをつけてください。
次は必ず読めるようになります。

コメント