本文へスキップ

FUNDAMENTAL INFORMATION TECHNOLOGY ENGINEER

基本情報技術者の問題解説

データ構造及びアルゴリズム 難しい fe_b_v89_alg_sortsearch_007

問題

配列 a={1,4,7}, b={2,4,6,8} に対して、次の手続 mergeScore(a,b) を実行したときの戻り値はどれか。

○整数型: mergeScore(整数型の配列: a, 整数型の配列: b)
  整数型: i ← 1, j ← 1, s ← 0
  while (i ≦ aの要素数 and j ≦ bの要素数)
    if (a[i] ≦ b[j])
      s ← s + a[i]
      i ← i + 1
    else
      s ← s - b[j]
      j ← j + 1
    endif
  endwhile
  return s + i × 10 + j
  1. 34
  2. 43
  3. 44
  4. 45
出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目B範囲

正解と解説

正解:44

正解:44

aとbの先頭を比べながら進める。1は加算、2は減算、4はa側を優先して加算、次の4はb側で減算、6を減算、7を加算する。この時点でi=4となりaを使い切る。sは0、i=4、j=4なので戻り値は0+40+4=44。

43は最後のjを3のままとした場合、34はiとjを逆にした場合に出やすい。45はb[4]=8まで処理してしまう誤り。

マージ処理では、どちらの配列の添字が進むかが重要。同値の場合にどちらを優先するかも戻り値に影響する。

この問題について

出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目B範囲

公開問題・サンプル問題の形式、擬似言語記法、アルゴリズム読解・トレース・空欄補充・セキュリティ事例判断の傾向を参考にした独自問題です。本文・数値・選択肢は新規作成しています。

公式試験問題、公開問題、市販教材、外部問題サイトの問題文を転載・改題したものではありません。

参考範囲: 2026年度現行科目B・シラバスVer.9.x参考

RELATED

関連問題