FUNDAMENTAL INFORMATION TECHNOLOGY ENGINEER
基本情報技術者の問題解説:次の手続 queueScore() を実行したときの戻り値は…
問題
次の手続 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)
- ア 8
- イ 9(正解)
- ウ 10
- エ 11
正解と解説
正解: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かで取り出す順が逆になる点を意識すると、この種の問題で迷いません。
この問題について
公開問題・サンプル問題の形式、擬似言語記法、アルゴリズム読解・トレース・空欄補充・セキュリティ事例判断の傾向を参考にした独自問題です。本文・数値・選択肢は新規作成しています。
公式試験問題、公開問題、市販教材、外部問題サイトの問題文を転載・改題したものではありません。