本文へスキップ

FUNDAMENTAL INFORMATION TECHNOLOGY ENGINEER

基本情報技術者の問題解説:次の手続 queueScore() を実行したときの戻り値は…

データ構造及びアルゴリズム 難しい fe_b_v90_alg_trace_096

問題

次の手続 queueScore() を実行したときの戻り値はどれか。

○整数型: queueScore()
  キュー q ← 空
  整数型: x, y
  enqueue(q, 4)
  enqueue(q, 1)
  x ← dequeue(q)
  enqueue(q, x + 2)
  enqueue(q, 3)
  y ← dequeue(q)
  enqueue(q, y + x)
  return dequeue(q) + dequeue(q)
  1. 8
  2. 9(正解)
  3. 10
  4. 11
出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目B範囲

正解と解説

正解:9

キューは先入れ先出しです。4,1を入れた後、x=4を取り出し、6を末尾に入れます。さらに3を入れると {1,6,3} になります。次にy=1を取り出し、y+x=5を末尾に入れるので {6,3,5} になります。最後の2回のdequeueは6と3で、戻り値は9です。

10は6と4を足したような途中値、11は6と5を足してしまった場合に出やすい値です。8はx+2の6を正しく末尾に置けていない場合です。

キューではenqueueは末尾、dequeueは先頭です。途中で取り出したx,yを使って新しい値を入れるので、キューの並びを毎回書きましょう。

スタックと比べる:同じ操作でも、もし先入れ後出しのスタック(enqueue→push、dequeue→pop)だったら結果は変わります。push 4,1の後popすると取り出すのは1なので、x=1。push 3、push 3を経てpopでy=3、push y+x=4。最後の2回のpopは4と3で戻り値は7です。FIFOか LIFOかで取り出す順が逆になる点を意識すると、この種の問題で迷いません。

この問題について

出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目B範囲

公開問題・サンプル問題の形式、擬似言語記法、アルゴリズム読解・トレース・空欄補充・セキュリティ事例判断の傾向を参考にした独自問題です。本文・数値・選択肢は新規作成しています。

公式試験問題、公開問題、市販教材、外部問題サイトの問題文を転載・改題したものではありません。

参考範囲: 2026年度現行科目B・シラバスVer.9.x参考

参考文献・出典(公式情報)

RELATED

関連問題