メインコンテンツへスキップ
基本情報技術者令和6年度 CBT科目B問 4

令和6年度 CBT 基本情報技術者 科目B 問4

難度標準

次の記述中の に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。

関数 merge は,昇順に整列された整数型の配列 data1 及び data2 を受け取り,これらを併合してできる昇順に整列された整数型の配列を返す。

関数 merge を merge({2, 3},{1,4})として呼び出すと, /* α */ の行は 。

[プログラム]

○整数型の配列: merge(整数型の配列:data1, 整数型の配列:data2)

整数型:n1 ← data1の要素数

整数型:n2 ← data2の要素数

整数型の配列: work ← {(n1 + n2)個の 未定義の値}

整数型:i←1

整数型:j←1

整数型:k←1

while((i ≤ n1) and (j ≤ n2))

if (data1[i] ≤ data2[j])

work[k] ← data1[i]

i←i+1

else

work[k] ← data2[j]

j←j+1

endif

k←k+1

endwhile

while (i ≤ n1)

work[k] ← data1[i]

i←i+1

k←k+1

endwhile

while (j ≤ n2)

work[k] ← data2[j] /* α */

j←j+1

k←k+1

endwhile

return work

選択肢

解説

結論 → 詳細 → 補足 の 3 層構成

展開
結論Layer 1

イは、最終的な結合処理のループにおける work[k] ← data2[j] の実行回数を問うています。

詳細Layer 2
展開

関数 merge({2, 3},{1, 4}) の場合、data1は{2, 3}でn1=2、data2は{1, 4}でn2=2です。最初のwhileループでは、data1[1] (2) > data2[1] (1)のため、work[1]に1が代入されjは2になります。次にdata1[1] (2) ≤ data2[2] (4)のため、work[2]に2が代入されiは2になります。さらにdata1[2] (3) ≤ data2[2] (4)のため、work[3]に3が代入されiは3になります。ここで最初のwhileループは終了します。iがn1を超えたため、次のwhile (i ≤ n1)ループは実行されません。最後にwhile (j ≤ n2)ループに入ります。jは2、n2は2なので条件を満たします。work[k] ← data2[j] が実行されwork[4]に4が代入されます。その後jは3、kは5となります。jがn2を超えたためこのループは1回実行され終了します。したがって、αの行は1回実行されます。アは最初のwhileループで処理が完了しないため間違いです。ウ、エは実行回数が実際と異なるため誤りです。

この解説は?
AI生成

解説は公式の問題文・公式解答を基に作成しています。 事実誤認・選択肢の取り違え・最新法令の反映漏れ等を含む可能性があるため、 重要な判断は必ずリンク先の公式資料でご確認ください。

最終更新:

検証プロセス・誤り報告フローは 運営透明性レポートで公開しています。

分野「アルゴリズムとプログラミング」の学習ポイント

この問題の理解を「分野全体の力」に広げるための足がかり

何が問われるか
計算量(O 記法)・基本データ構造・典型アルゴリズム(探索・整列)・再帰の挙動を読む力。
学習の進め方
擬似コードを実際にトレースして変数の遷移を表に書き出す習慣を付ける。スタック/キュー/木の図示が定着の鍵。
関連キーワード
計算量二分探索クイックソート再帰スタックキュー木構造
この分野の問題をもっと解く
AI コパイロット

この問題を AI と深掘りする

用語解説・選択肢分析・類題生成をその場で対話。クイズモードでは解答→解説がゼロ遷移。

クイズモードで開く

関連する問題

アルゴリズムとプログラミング の他の問題

他年度の「アルゴリズムとプログラミング」問題

基本情報技術者 の同じ分野を年度をまたいで演習する

基本情報技術者 の学習ガイド