CO-P11情報Ⅰ 対策問題

コンピュータとプログラミングプログラミング特訓 (第3問対策)

次のプログラムは、6人分のアンケート回答(0〜2のいずれか)が入った配列 Kotae から、回答の値ごとの人数を配列 Hindo に集計する(Hindo[0] には回答0の人数が入る)。実行したとき、表示される値はどれか。 (1) Hindo = [0, 0, 0] (2) Kotae = [2, 0, 1, 2, 2, 0] (3) i を 0 から 5 まで 1 ずつ増やしながら繰り返す: (4) ⎿ Hindo[Kotae[i]] = Hindo[Kotae[i]] + 1 (5) 表示する(Hindo) ※ 配列の添字は0から始まる。

解答・解説を見る

正解: 1

正答

1

この問題のポイント

配列を添字に使う集計(度数カウント) — 本試験レベルの重要技法です。

解説

(4)の Hindo[Kotae[i]] は配列の入れ子参照です。まず内側の Kotae[i] の値を確定させ、その値を Hindo の添字として使う、と2段階で読みます。たとえば Kotae[i] が2なら、Hindo[2] を1増やす——つまり「回答2の度数を1増やす」ことになります。

Hindo の変化を1ステップずつトレースします。
i=0のとき: Kotae[0]=2 → Hindo[2]を+1 → [0, 0, 1]
i=1のとき: Kotae[1]=0 → Hindo[0]を+1 → [1, 0, 1]
i=2のとき: Kotae[2]=1 → Hindo[1]を+1 → [1, 1, 1]
i=3のとき: Kotae[3]=2 → Hindo[2]を+1 → [1, 1, 2]
i=4のとき: Kotae[4]=2 → Hindo[2]を+1 → [1, 1, 3]
i=5のとき: Kotae[5]=0 → Hindo[0]を+1 → [2, 1, 3]
よって表示は [2, 1, 3](0が2回、1が1回、2が3回)です。

これは「アンケートの回答(0〜2)を集計して度数分布を作る」処理そのもので、もし〜ならばの分岐を3つ並べなくても、値をそのまま添字に流し込むことで1行で集計できるのがこの技法の威力です。検算として、度数の合計 2+1+3=6 が回答数(要素数6)と一致することも確認しましょう。

令和の共通テスト第3問では、この「配列の値を別の配列の添字に使う」形が繰り返し出題されています。Hindo[Kotae[i]] を見て一瞬で「度数カウントだ」と見抜けるようになれば、本試験の長いプログラムでも処理の目的がすぐつかめます。

選択肢の確認

1.○ 0が2回、1が1回、2が3回で [2, 1, 3]。合計6=回答数とも一致。
2.× [3, 1, 2] は度数の並びを逆にした誤り。添字0の度数が先頭に来る。
3.× 集計せず Kotae の先頭3個を写しただけの形。
4.× 数え間違い。トレース表を書けば防げる。

ここだけは覚えよう

Hindo[Kotae[i]] は「内側を確定→それを添字に」の2段階読み — 値を添字に流し込むのが度数カウントの定石。

関連問題

CO-P10CO-P12