アルゴリズムとプログラミング
基本情報技術者試験|次の擬似言語は、逆ポーランド記法(後置記法)の式をスタックで評価する手続である。トークン列を左から処理し、数値な…
次の擬似言語は、逆ポーランド記法(後置記法)の式をスタックで評価する手続である。トークン列を左から処理し、数値なら 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 とする桁の誤りである。
アルゴリズムとプログラミングの他の問題
次の擬似言語は、スタックを使って文字型の配列 s を逆順にした文字列を返す手続である。まず全文字を順に push…次の擬似言語は、演算子 + と ×…次の擬似言語は、丸括弧 ( ) と角括弧 [ ]…1, 2, 3, 4 をこの順に push できるスタックがある。push と pop…2 つのスタック inStk と outStk を用いてキューを実現する。enq は inStk に push…次の擬似言語は、キュー q を用いて整数を処理する。先頭から値を取り出し、それが 3 で割り切れれば total…両端キュー(デック)dq…値スタック valStk と最大値スタック maxStk の 2 本を使い、push…
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。
基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。
登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。
作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0029
