FUNDAMENTAL INFORMATION TECHNOLOGY ENGINEER
基本情報技術者の問題解説:次のスタック操作を実行したとき、最後にスタックの一番上にある…
問題
次のスタック操作を実行したとき、最後にスタックの一番上にある値はどれか。
push(4) push(7) push(2) x ← pop() y ← pop() push(y - x) push(3) x ← pop() y ← pop() push(y × x) x ← pop() y ← pop() push(x - y) return top()
- ア 9
- イ 10
- ウ 11(正解)
- エ 12
出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.x 科目B範囲
正解と解説
正解:11
スタックは後入れ先出しです。最初に2と7を取り出して7-2=5を積みます。次に3と5を取り出して5×3=15を積みます。最後に15と4を取り出して15-4=11を積みます。
引き算ではpopした順序を取り違えると別の値になります。
Hardでの確認点:スタックでは最後に入れた値から取り出します。xとyに入る順番が式の左右に影響するため、減算や除算では特に注意しましょう。スタックの中身を毎操作後に書くと、途中値を取り違えにくくなります。
追加の確認:Hard問題では、正解値だけでなく、途中の更新規則を一つずつ確認しましょう。どの条件で変数・添字・候補集合が変わるのかを見落とすと、もっともらしい選択肢に引っかかりやすくなります。
この問題について
擬似言語記法、アルゴリズム読解・トレース・空欄補充・セキュリティ事例判断の傾向を参考にした独自問題です。本文・数値・選択肢は新規作成しています。
公式試験問題、公開問題、市販教材、外部問題サイトの問題文を転載・改題したものではありません。