2023年4月から基本情報技術者の試験制度が変更されました。
試験制度は変更されたものの科目B(旧:午後問題)の重要さは変わりません。
出題方式は「多肢選択式」で以前と同じですが、データ構造及びアルゴリズムが8割、情報セキュリティが2割の割合で出題される点が大きく変わっています。
合格基準点は600点以上/1000点満点中、つまり6割以上取れれば合格になります。
サンプル問題では前半16問が「データ構造及びアルゴリズム」の問題。残り4問が「情報セキュリティ」の問題。となっています。
サンプル問題は公式にIPAから出されている貴重な情報です!
早速、問題を見ていきましょう!
問3 (データ構造及びアルゴリズム)
設問
解答
答え:「カ」
解説
配列に関する問題になります。
out の末尾 に in[1] の値 を追加します。
配列の要素番号は1から始まるという条件があるので in[1] の値は 3、outに3を追加します。
⇒out = {3}
※outという配列に追加しています。
要素に対して値を入れていく場合は、out[要素数] = 3 と行ったように表記します。
for文の処理に入ります。トレースして見ましょう。
・i = 2
tail ← out[outの要素数] = out[1] = 3
⇒tail = 3
outの末尾に tail + in[i] = 3 + 2 = 5 を追加
⇒out = {3, 5}
・i = 3
tail ← out[outの要素数] = out[2] = 5
⇒tail = 5
outの末尾に tail + in[i] = 5 + 1 = 6 を追加
⇒out = {3, 5, 6}
・i = 4
tail ← out[outの要素数] = out[3] = 6
⇒tail = 6
outの末尾に tail + in[i] = 6 + 6 = 12 を追加
⇒out = {3, 5, 6, 12}
・i = 5
tail ← out[outの要素数] = out[4] = 12
⇒tail = 12
outの末尾に tail + in[i] = 12 + 5 = 17 を追加
⇒out = {3, 5, 6, 12, 17}
・i = 6
tail ← out[outの要素数] = out[5] = 17
⇒tail = 17
outの末尾に tail + in[i] = 17 + 4 = 21 を追加
⇒out = {3, 5, 6, 12, 17, 21}
戻り値として返される配列 out の要素番号5の値は 17 ({3, 5, 6, 12, 17, 21})です。
※戻り値は簡単に言うと「return」の後ろにあるものになります。
今回は、「配列 out」を指します。
よって、正解の選択肢は「カ」となります。
最後に
いかがだったでしょうか。
この手の問題は手間ではありますが、トレースすることで間違いも減ります。
慣れれば、特にトレースすることなくプログラムの内容から下記のようになっていることがわかり、正解を導き出せるかと思います。
out[1] = in[1] = 3
out[2] = in[1] + in[2] = 3 + 2 = 5
out[3] = in[1] + in[2] + in[3] = 3 + 2 + 1 = 6
out[4] = in[1] + in[2] + in[3] + in[4] = 3 + 2 + 1 + 6 = 12
out[5] = in[1] + in[2] + in[3] + in[4] + in[5] = 3 + 2 + 1 + 6 + 5 = 17
最初のうちはめんどくさいとは思いますが、トレースをしてどういた動きをするのかを追いかけて練習をすると良いと思います。今後、どんどん複雑な問題が出題されてきたときでも焦らずに対応することができます。
徐々に難易度が上がってきましが、一個ずつ処理を追っていくことで正解を導くことができます。何度も反復して解法を身に着けていきましょう!!