科目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 の公開問題。図・数式・下線などはテキストに直して掲載。解説は当サイト作成)
解説に誤りを見つけたら、解説の誤りを報告してください。
答えと解説を見る
正解:カ
覚える知識
累積和の配列
累積和とは、先頭から 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(キ)を選ぶ、といった数え違いを誘う。