2026年5月12日
配列操作は5パターンで攻略できる
共通テスト情報Ⅰのプログラミング問題で、配列操作は最頻出テーマです。配列を使ったプログラムの穴埋めやトレース(変数の値の変化を1行ずつ追う作業)が出題されます。DNCL(共通テスト用の擬似言語)で書かれたプログラムを読めるかどうかが得点を大きく左右します。
配列操作の出題は、実は数種類のパターンの組み合わせでできています。「合計」「最大値」「探索」「交換」「カウント」の5つのパターンを覚えれば、ほとんどの問題に対応できます。情報Ⅰの擬似コード読解と合わせて学習すると効果的です。
配列の基本:宣言は A ← { 5, 3, 8, 1, 7 }。添字(そえじ)が0と1のどちらから始まるかは問題によって定義されるので、解く前に問題文を必ず確認しましょう。この記事では添字を1から使う例(A[1] が最初の要素)で説明します。配列の要素数(長さ)は問題文中で明示されるか、繰り返し文の範囲(例:「1から5まで」)から読み取れます。
パターン1: 合計を求める
A ← {4, 7, 2, 9, 3}
sum ← 0
i を 1 から 5 まで 1 ずつ増やしながら繰り返す
sum ← sum + A[i]
を実行する
表示する(sum) → 出力: 25 ポイント:sumを0で初期化し、ループで各要素を足していく。条件付き合計(偶数だけ等)なら条件分岐を追加。
パターン2: 最大値を求める
A ← {4, 7, 2, 9, 3}
max ← A[1]
i を 2 から 5 まで 1 ずつ増やしながら繰り返す
もし A[i] > max ならば
max ← A[i]
を実行する
を実行する
表示する(max) → 出力: 9 ポイント:maxを最初の要素で初期化し、2番目以降と比較して大きければ更新。最小値なら不等号を逆にするだけ。
パターン3: 線形探索
A ← {4, 7, 2, 9, 3}
target ← 9
found ← -1
i を 1 から 5 まで 1 ずつ増やしながら繰り返す
もし A[i] = target ならば
found ← i
繰り返しを抜ける
を実行する
を実行する
表示する(found) → 出力: 4 ポイント:先頭から順に探し、見つかったら位置を記録してループを抜ける。見つからなければfoundは-1のまま。
パターン4: 要素の交換(スワップ)
A ← {2, 5, 8, 3}
i ← 1
j ← 3
temp ← A[i]
A[i] ← A[j]
A[j] ← temp
表示する(A) → 出力: {8, 5, 2, 3} ポイント:2つの変数の値を入れ替えるには、必ず一時変数(temp)が必要です。もし A[i] ← A[j] だけ実行すると、A[i]の元の値が上書きされて消えてしまい、次の A[j] ← temp で正しい値を戻せなくなります。手順は「①A[i]をtempに退避 → ②A[j]をA[i]に代入 → ③tempをA[j]に代入」の3ステップで固定です。この操作は選択ソートやバブルソートなどソートアルゴリズムの中核として繰り返し登場します。
パターン5: カウント(条件を満たす個数を数える)
A ← {3, 7, 2, 8, 5, 1}
count ← 0
i を 1 から 6 まで 1 ずつ増やしながら繰り返す
もし A[i] > 4 ならば
count ← count + 1
を実行する
を実行する
表示する(count) → 出力: 3 ポイント:合計(パターン1)と形はそっくりですが、足しているのが「値」ではなく「1」である点が違います。count ← 0 で初期化し、条件(例:A[i] > 4)を満たすたびに count ← count + 1 します。条件を変えるだけで「偶数の個数」「ある値以上の個数」など様々な出題に応用できるため、条件式を正しく読み取ることが得点の鍵になります。
配列操作でよくあるミス
共通テストの配列問題で失点しやすいポイントを整理します。
- 添字のズレ:「1から始まる」問題文なのに0からと勘違いして1つずれた要素を参照してしまう
- ループの終了条件の見落とし:「5個の要素なら1から5まで」なのか「1から4まで」なのかを繰り返し文の条件から正確に読み取る
- 初期値の設定ミス:最大値探索でmaxを0で初期化してしまう(負の数や0だけの配列だと壊れる)。正しくはA[1]など配列の要素で初期化する
- スワップでtempを使い忘れる:直接代入すると片方の値が消えて正しく交換できない
- 比較演算子の向き:最大値なら
>、最小値なら<。問題を焦って読むと逆にしてしまいやすい
練習問題
問題1
次のプログラムの出力を答えよ。
A ← {3, 1, 4, 1, 5, 9}
sum ← 0
i を 1 から 6 まで 1 ずつ増やしながら繰り返す
もし A[i] > 3 ならば
sum ← sum + A[i]
を実行する
を実行する
表示する(sum) 解答:4+5+9 = 18(3より大きい要素の合計)
問題2
次は配列Aの最小値の位置を求めるプログラムです。空欄[ア]に入る条件と、最後に表示される値を答えよ。
A ← {5, 3, 8, 1, 6}
min_pos ← 1
i を 2 から 5 まで 1 ずつ増やしながら繰り返す
もし [ア] ならば
min_pos ← i
を実行する
を実行する
表示する(min_pos) 解答:[ア]は A[i] < A[min_pos](i番目の要素が現在の最小値より小さいか判定)。トレース表で追うと次のようになります。
- 初期状態:min_pos=1(A[1]=5)
- i=2:A[2]=3 < A[1]=5 → 真 → min_pos=2に更新
- i=3:A[3]=8 < A[2]=3 → 偽 → min_posは2のまま
- i=4:A[4]=1 < A[2]=3 → 真 → min_pos=4に更新
- i=5:A[5]=6 < A[4]=1 → 偽 → min_posは4のまま
よって最終的に表示される値は 4 です(配列の4番目の要素1が最小値のため)。
問題3
A={ 1,2,3,4,5 } に対して先頭をtempに退避→各要素を左にずらす→末尾にtempを入れる。実行後のAは?
解答:A = { 2, 3, 4, 5, 1 }。先頭の要素を末尾に移動する「左回転」の処理。
問題4
次のプログラムを実行した後の配列Aを答えよ。
A ← {6, 2, 9, 4}
i ← 2
j ← 4
temp ← A[i]
A[i] ← A[j]
A[j] ← temp
表示する(A) 解答:A = { 6, 4, 9, 2 }。i=2, j=4なので、A[2](値2)とA[4](値4)を交換します。temp←A[2]=2 → A[2]←A[4]=4 → A[4]←temp=2 となり、結果は { 6, 4, 9, 2 } です。
問題5
次のプログラムの出力を答えよ。
A ← {1, 8, 3, 6, 9, 2, 7}
count ← 0
i を 1 から 7 まで 1 ずつ増やしながら繰り返す
もし A[i] >= 6 ならば
count ← count + 1
を実行する
を実行する
表示する(count) 解答:4。A={ 1,8,3,6,9,2,7 } のうち6以上の要素は8, 6, 9, 7の4つなので、countは4になります。
テストでのコツ
- 配列問題はトレース表を書く(列: i, A[1], A[2], ..., 変数)
- 「何をするプログラムか」を先に把握する
- 空欄問題は選択肢を入れてトレースし、目的に合う結果になるか確認
DNCLの読み方攻略で読解テクニックを確認。アルゴリズム・ソートで配列を使ったソートも学べます。共通テスト対策スケジュールで全体の学習計画を。過去問の解き方で実践練習。
まとめ
- ✅ 配列操作は5パターン(合計、最大値、探索、交換、カウント)
- ✅ 配列の添字は0始まりか1始まりか問題文で確認する
- ✅ トレース表を必ず書く
- ✅ 「何をするプログラムか」を先に把握する