アルゴリズムとプログラミング
基本情報技術者試験「スタック・キュー」の問題
次の擬似言語は、逆ポーランド記法(後置記法)の式をスタックで評価する手続である。トークン列を左から処理し、数値なら push、演算子なら上位 2 値を pop して計算結果を push する。減算・除算は先に pop した値を右側オペランドとする。トークン列 {"5", "3", "+", "4", "*"} を与えて実行したとき、戻り値はどれか。
○整数型: evalRPN(トークンの配列: t)
for (各トークン tok を t から取り出す)
if (tok が数値)
push(tok を整数に変換)
else
整数型: b ← pop()
整数型: a ← pop()
push(a tok b の計算結果)
endif
endfor
return pop()ア27
イ23
ウ32
エ320
正解
ウ.32
5,3 を push し '+' で 5+3=8 を push、4 を push し '*' で 8×4=32 を push する。最後に pop した 32 が返るため ウが正しい。式に直すと (5+3)×4=32 である。
?選択肢ごとの解説
ア ×加算と乗算の順序を取り違え 5+3×... のように中置記法的に解釈した結果に近い誤りである。
イ ×演算子の適用順を誤り (5+3)×4 ではなく 5+3×4 を中置として評価しようとした誤りである。
ウ ○5,3 を push し '+' で 5+3=8 を push、4 を push し '*' で 8×4=32 を push する。最後に pop した 32 が返るため ウが正しい。式に直すと (5+3)×4=32 である。
エ ×正解 32 の桁を取り違え 10 倍した 320 とする桁の誤りである。
アルゴリズムとプログラミングの他の問題
次の擬似言語で表される手続 sumOdd を、引数として要素数 5 の整数型の配列 {12, 125, 1008,…次の擬似言語は、整数型の配列 arr に対して隣接交換を行う手続の一部であり、外側ループの 1 回目(1…次の擬似言語は昇順に整列された配列 arr に対する二分探索の手続である。arr = {2, 4, 6, 8, 10,…次の擬似言語で表される再帰手続 f を、引数 n = 20 で呼び出したとき、戻り値として返される値はどれか。
```…単方向連結リストの各ノードはメンバ val(整数)と next(次ノードへの参照。なければ NULL)をもつ。先頭ノード…スタックに対する push(積む)と…
この問題の「深掘り・誤答の完全解説・試験のコツ・覚え方」はアプリで。
無料ではじめる →基本情報技術者試験の全問を、一問ごとにAIの8-ways解説つきで。SRS暗記カード・全真模試・弱点診断まで。まずは無料で。
作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0029
