イは、最終的な結合処理のループにおける `work[k] ← data2[j]` の実行回数を問うています。
読み込み中...
読み込み中...
次の記述中の に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は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 層構成
イは、最終的な結合処理のループにおける `work[k] ← data2[j]` の実行回数を問うています。
関数 `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ループで処理が完了しないため間違いです。ウ、エは実行回数が実際と異なるため誤りです。
解説は Google Gemini に IPA 公式の問題文・公式解答を入力して生成しています。 事実誤認・選択肢の取り違え・最新法令の反映漏れ等を含む可能性があるため、 重要な判断は必ず IPA 公式資料でご確認ください。
最終更新:
検証プロセス・誤り報告フローは 運営透明性レポートで公開しています。
この問題の理解を「分野全体の力」に広げるための足がかり
用語解説・選択肢分析・類題生成をその場で対話。クイズモードでは解答→解説がゼロ遷移。
アルゴリズムとプログラミング の他の問題
基本情報技術者 の同じ分野を年度をまたいで演習する
基本情報技術者 勉強時間の目安|社会人・学生・未経験別の合格モデル
基本情報技術者試験の合格に必要な勉強時間を、社会人・学生・IT未経験の3パターン別に分解。週次の時間配分例と科目A/Bの配分指針を実例で解説します。
基本情報技術者 科目B完全対策|疑似言語・アルゴリズムを確実に解く方法
基本情報技術者試験の科目Bは疑似言語とアルゴリズムが中心。トレース力の鍛え方・頻出パターン(ソート・再帰・リスト)の解法を、AIコパイロット活用法とともに解説します。
基本情報のアルゴリズムが苦手な人の克服ステップ|挫折せずに科目Bを突破する
基本情報技術者試験の科目Bで多くの受験者が挫折するアルゴリズム分野。苦手意識を解消し、確実に得点できるようになるための学習ステップと心の作り方を解説します。
基本情報技術者試験 出題傾向の最新分析|2024〜2025年で増えた論点と捨て論点
基本情報技術者試験の直近2年の出題傾向を分析し、増加している新論点・減少している論点・捨てて良い論点を整理。学習計画の優先度付けに活用できます。