FE SUBJECT B
基本情報技術者 科目Bの問題解説
問題
次のマージ処理を途中まで実行したとき,戻り値はどれか。
整数型の配列: a ← {1, 4, 6, 9}
整数型の配列: b ← {2, 4, 5, 8}
整数型: i ← 1, j ← 1
整数型の配列: out ← {}
while (i ≦ aの要素数 and j ≦ bの要素数 and outの要素数 < 5)
if (a[i] ≦ b[j])
append(out, a[i])
i ← i + 1
else
append(out, b[j])
j ← j + 1
endif
endwhile
return out[5]- ア 4
- イ 5
- ウ 6
- エ 8
出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目B範囲
正解と解説
正解:5
正解:5
2つの整列済み配列の先頭候補を比べ,小さい方をoutへ追加する。同値のときは条件がa[i]≦b[j]なので,a側を先に追加する。
| 追加値 | i | j | out |
|---|---|---|---|
| 1 | 2 | 1 | {1} |
| 2 | 2 | 2 | {1,2} |
| 4(a) | 3 | 2 | {1,2,4} |
| 4(b) | 3 | 3 | {1,2,4,4} |
| 5 | 3 | 4 | {1,2,4,4,5} |
out[5]は5。同じ4が2回出る点を落とすと答えがずれる。
選択肢の見分け方:4は同値4の片方だけを見た誤り,6や8は5個目で止めずに先へ進めた誤りである。outの要素数が5になった時点で処理を止める。
この問題について
公開問題・サンプル問題の形式、擬似言語記法、アルゴリズム読解・トレース・空欄補充・セキュリティ事例判断の傾向を参考にした独自問題です。本文・数値・選択肢は新規作成しています。
公式試験問題、公開問題、市販教材、外部問題サイトの問題文を転載・改題したものではありません。