アルゴリズムとプログラミング

基本情報技術者試験同じ入力列 1, 2, 3, 4 を、(A) スタック(push 後にすべて pop)と (B)…

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:normal
同じ入力列 1, 2, 3, 4 を、(A) スタック(push 後にすべて pop)と (B) キュー(enqueue 後にすべて dequeue)でそれぞれ全要素を取り出す。次の手続を実行したとき、出力 outA(スタック)と outB(キュー)を連結した文字列の組はどれか。push/pop は LIFO、enqueue/dequeue は FIFO に従う。
○手続: run()
  // (A) スタック
  整数型: v
  for (v を 1 から 4 まで 1 ずつ増やす) stk.push(v) endfor
  while (stk が空でない) outA ← outA + stk.pop() endwhile
  // (B) キュー
  for (v を 1 から 4 まで 1 ずつ増やす) que.enqueue(v) endfor
  while (que が空でない) outB ← outB + que.dequeue() endwhile
outA="4321",outB="4321"
outA="1234", outB="4321"(逆に割当)
outA="1234", outB="1234"
outA="4321", outB="1234"
正解
エ.outA="4321", outB="1234"

スタックは最後に積んだ 4 から取り出すため出力は 4321、キューは最初に入れた 1 から取り出すため出力は 1234 となる。両者の対比が正しく表れる エが正しい。

?選択肢ごとの解説

ア ×キューも逆順になると誤認した、FIFO が入力順を保つ性質を見落とした誤りである。
イ ×スタックとキューの出力を取り違え、LIFO と FIFO を逆に割り当てた誤りである。
ウ ×スタックも入力順になると誤認した、LIFO による逆転を見落とした誤りである。
エ ○スタックは最後に積んだ 4 から取り出すため出力は 4321、キューは最初に入れた 1 から取り出すため出力は 1234 となる。両者の対比が正しく表れる エが正しい。
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。

基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。

登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。

作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0108

【基本情報技術者試験】同じ入力列 1, 2, 3, 4 を、(A)…|正解「outA="4321",…」|ukamiru 過去問