科目B

基本情報技術者試験 科目B サンプル問題セット(2022年12月公表) 問3

次の記述中の   に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は 1 から始まる。 関数 makeNewArray は,要素数 2 以上の整数型の配列を引数にとり,整数型の配列を返す関数である。関数 makeNewArray を makeNewArray({3, 2, 1, 6, 5, 4})として呼び出したとき,戻り値の配列の要素番号 5 の値は   となる。 〔プログラム〕
○整数型の配列: makeNewArray(整数型の配列: in)
  整数型の配列: out ← {} // 要素数0の配列
  整数型: i, tail
  outの末尾 に in[1]の値 を追加する
  for (i を 2 から inの要素数 まで 1 ずつ増やす)
    tail ← out[outの要素数]
    outの末尾 に (tail + in[i]) の結果を追加する
  endfor
  return out
答えを選ぶ

出典:基本情報技術者試験 科目B サンプル問題セット(2022年12月公表) 問3(問題文は IPA の公開問題。図・数式・下線などはテキストに直して掲載。解説は当サイト作成)

科目Bの解き方と全問の一覧

解説に誤りを見つけたら、解説の誤りを報告してください。

答えと解説を見る

正解:カ

覚える知識

累積和の配列

累積和とは、先頭から i 番目までの値を足し合わせたものを順に並べた配列。直前の累積和に次の要素を足せば求まる。

この問題で必要なこと

out の末尾の値に in[i] を足して追加していくので、out は累積和になる。in={3,2,1,6,5,4} から out={3,5,6,12,17,21}。要素番号 5 は 17 でカが正解。

ひっかけ

in[5]=5 をそのまま答える(ア)、要素番号を 0 始まりで数えて 12(オ)や 21(キ)を選ぶ、といった数え違いを誘う。