基本情報処理試験2024年度の練習問題、問4の解説
基本情報処理試験2024年度の練習問題の解説が見つからなかったので、
問題文をAIに読み込ませた解説に対して、一部自分のメモを記載。
解答群
ア: 実行されない
イ: 1 回実行される
ウ: 2 回実行される
エ: 3 回実行される
コード
○整数型の配列: 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
解説
merge({2, 3}, {1, 4}) を実行する際の手順を追います:
初期状態:
data1 = {2, 3}
data2 = {1, 4}
n1 = 2
n2 = 2
work = {未定義, 未定義, 未定義, 未定義}
i = 1, j = 1, k = 1
最初の while ループ(while ((i ≦ n1) and (j ≦ n2))):
data1[1] (2) > data2[1] (1) なので、work[1] = data2[1]、j = 2、k = 2 work=[1]
data1[1] (2) ≦ data2[2] (4) なので、work[2] = data1[1]、i = 2、k = 3、work=[1,2]
data1[2] (3) ≦ data2[2] (4) なので、work[3] = data1[2]、i = 3、k = 4、work=[1,2,3)
i > n1 になるため、最初の while ループを終了。<And条件なので、どちらかの条件がFalseになるとループを抜ける。
次の while ループ(while (i ≦ n1))は実行されない(i = 3 > n1 = 2)。
最後の while ループ(while (j ≦ n2)):
j = 2 で、work[4] = data2[2] (4)、j = 3、k = 5 work=[1,2,3,4]
結果として、/*** α ***/ の行(work[k] ← data2[j])は 1 回実行される ので、正解は「イ」。
この記事が気に入ったらサポートをしてみませんか?