基本情報技術者試験 (FE) 科目 B — 練習問題 第 16 問 / 全 20 問 · 本番相当
2 配列の併合
関連レッスン: 繰り返し (for) — 「〜から〜まで〜ずつ増やす」の読み方
配列 A と配列 B はどちらも昇順に整列されている。次のプログラムを実行したとき、出力される内容はどれか。
整数型の配列: A ← {1, 4, 9}
整数型の配列: B ← {2, 3, 10}
整数型: i ← 1
整数型: j ← 1
for (k を 1 から 4 まで 1 ずつ増やす)
if (A[i] ≦ B[j])
print(A[i])
i ← i + 1
else
print(B[j])
j ← j + 1
endif
endfor解説
正解: ア 1 2 3 4
(i, j) の動きを追います。k = 1: A[1] = 1 ≦ B[1] = 2 なので 1 を出力し i = 2。k = 2: A[2] = 4 ≦ 2 は偽なので 2 を出力し j = 2。k = 3: 4 ≦ B[2] = 3 は偽なので 3 を出力し j = 3。k = 4: 4 ≦ B[3] = 10 なので 4 を出力し i = 3。出力は 1、2、3、4 です。
取り出したほうの添字だけを進める、という点が要です。両方を毎回進めてしまうと A と B を交互に読む形になり、イ や エ のような並びになります。「進めるのは出力したほうだけ」と覚えてください。
このコードは 4 回で打ち切っていますが、実際の併合ではどちらかの配列を読み切った後の処理 (残りをそのまま出力する) が必要です。読み切ったまま A[i] を参照すると範囲外アクセスになるため、本来は i ≦ 3 などの条件も条件式に加えます。
添字を進めるのは出力したほうだけ。両方進めると交互に読む形になる。
演習量を増やしたい方へ(おすすめ書籍)
擬似言語の記法の読み方から、トレースして答えを出すまでを一冊で通せる科目B特化本。手を動かして追う練習量を確保したいときの定番。
科目Bの出題パターンを網羅的に演習できる対策書。構文を理解した後、解法の型を身につける段階で効く。
科目Bの出題範囲を絞り込んだ薄型の対策書。頻出アルゴリズムと情報セキュリティを短期間で一周したいときに。
本セクションはAmazonアソシエイトのリンクを含みます。
プログラムの読み方でつまずいたら。
たいてっくが、アルゴリズムの追い方から SQL・データベース設計まで、1対1で学習をサポートします。「コードを目で追っても何をしているか分からない」段階からで大丈夫です。まずは無料相談から。
「教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。」
— H 様(DB・SQL コース受講)「体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。」
— M 様(DB・SQL コース受講)「大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。」
— K 様(DB・SQL コース受講)