CO-S09情報Ⅰ 対策問題

コンピュータとプログラミング思考・計算

次のプログラムは配列の最大値を求める。空欄【ア】に入るものはどれか。 (1) Data = [3, 9, 5, 7] (2) saidai = Data[0] (3) i を 1 から 3 まで 1 ずつ増やしながら繰り返す: (4) | もし 【ア】 ならば: (5) ⎿ ⎿ saidai = Data[i] (6) 表示する(saidai)

解答・解説を見る

正解: 1

正答

1

この問題のポイント

最大値を求めるアルゴリズムの穴埋め を問う問題です。「暫定チャンピオンより大きければ更新」という考え方がカギです。

解説

最大値を求めるアルゴリズムの発想は「勝ち抜き戦」です。まず先頭の要素を暫定の最大値(チャンピオン)としてsaidaiに入れておき、残りの要素を順番に見て、暫定値より大きいものが現れたらsaidaiをその値に更新します。全部見終わったとき、saidaiに残っているのが本当の最大値です。したがって空欄の条件は Data[i] > saidai になります。

実際に Data = [3, 9, 5, 7] でトレースして確かめます。

  1. (2)で saidai = Data[0] = 3(暫定最大値)
  2. i=1: Data[1]=9。9 > 3 は真 → saidai = 9 に更新
  3. i=2: Data[2]=5。5 > 9 は偽 → 更新しない
  4. i=3: Data[3]=7。7 > 9 は偽 → 更新しない
  5. (6)で9を表示 → 確かに最大値

最小値を求めるなら、不等号を逆にして Data[i] < saisho とするだけです。「最大は >、最小は <」とペアで覚えると混同しません。また、初期値を0にせずData[0]にするのは、全要素が負の場合でも正しく動くようにするためです。

この「暫定値と比較して更新」パターンは、令和8年度本試験の最長待ち時間を求めるプログラムでも使われた超頻出の型です。共通テストでは条件式の穴埋めや不等号の向きを問う形で出るので、トレースで動きを確認して選ぶ習慣をつけましょう。

選択肢の確認

1.○ 暫定最大値より大きいときに更新するのが最大値の求め方。
2.× Data[i] < saidai は最小値を求めるときの条件。
3.× iは添字(位置の番号)であり、値と比較しても意味がない。
4.× 等しいときに同じ値で更新しても結果は変わらない。

ここだけは覚えよう

最大値は「暫定値より大きければ更新」 — 最大は Data[i] > saidai、最小は不等号を逆に。

関連問題

CO-S08CO-S10