【解説】基本情報技術者試験 サンプル問題 問8

2023年4月から基本情報技術者の試験制度が変更されました。

試験制度は変更されたものの科目B(旧:午後問題)の重要さは変わりません。

出題方式は「多肢選択式」で以前と同じですが、データ構造及びアルゴリズムが8割、情報セキュリティが2割の割合で出題される点が大きく変わっています。

合格基準点は600点以上/1000点満点中、つまり6割以上取れれば合格になります。

サンプル問題では前半16問が「データ構造及びアルゴリズム」の問題。残り4問が「情報セキュリティ」の問題。となっています。

サンプル問題は公式にIPAから出されている貴重な情報です!

早速、問題を見ていきましょう!

 

 

問8 (データ構造及びアルゴリズム) 

設問

出典:基本情報技術者試験 科目B試験サンプル問題



 

解答 

答え:「エ」

 

 

解説

優先度付きキュー操作に関する問題です。

 

まず、enqueue(エンキュー)、denqueue(デキュー)の操作について確認しましょう。

enqueue:キューの最後に要素を追加する操作

dequeue:キューから要素を取り出す操作

     最も優先度の高い要素を取り出し、最も優先度が複数ある場合

     には、先に追加された要素を一つ取り出す

 

 

プログラムの処理をトレースしていきましょう。

PrioQueue.enqueue("A", 1)
 ⇒[("A", 1)]

PrioQueue.enqueue("B", 2)
 ⇒[("A", 1), ("B", 2)]

PrioQueue.enqueue("C", 2)
 ⇒[("A", 1), ("B", 2), ("C", 2)]

PrioQueue.enqueue("D", 3)

 ⇒[("A", 1), ("B", 2), ("C", 2), ("D", 3)]

PrioQueue.dequeue()
 ⇒[("B", 2), ("C", 2), ("D", 3)]

PrioQueue.dequeue()
 ⇒[("C", 2), ("D", 3)]

  ※"B"と"C"で優先度が同一のため、先に追加されている"B"を取り出す

PrioQueue.enqueue("D", 3)
 ⇒[("C", 2), ("D", 3), ("D", 3)]

PrioQueue.enqueue("B", 2)
 ⇒[("C", 2), ("D", 3), ("D", 3), ("B", 2)]

PrioQueue.dequeue()
 ⇒[("D", 3), ("D", 3), ("B", 2)]

  ※"C"と"B"で優先度が同一のため、先に追加されている"C"を取り出す

PrioQueue.dequeue()
 ⇒[("D", 3), ("D", 3)]

PrioQueue.enqueue("C", 2)
 ⇒[("D", 3), ("D", 3), ("C", 2)]

PrioQueue.enqueue("A", 1)
 ⇒[("D", 3), ("D", 3), ("C", 2), ("A", 1)]

 

したがって、dequeueを4回繰り返すと、「"A"、"C"、"D"、"D"」と出力されます。

よって、正解の選択肢は「エ」になります。

 

最後に

いかがだったでしょうか。プログラム系の問題はトレースするしかありません。

今回は、キューについて基本的なことを理解できていれば、問題文に書いてあるとおりにプログラムをなぞっていくことで簡単に解ける問題です!

このような問題はケアレスミスのないようにして確実にとっていきましょう!

反対にこの問題でよくわからない点・疑問点が出てくる方はもう一度該当部分の参考書を見直してみましょう!