アルゴリズムとプログラミング

基本情報技術者試験次の擬似言語は、逆ポーランド記法(後置記法)の式をスタックで評価する手続である。トークン列を左から処理し、数値な…

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:hard
次の擬似言語は、逆ポーランド記法(後置記法)の式をスタックで評価する手続である。トークン列を左から処理し、数値なら 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 とする桁の誤りである。
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。

基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。

登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。

作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0029

【基本情報技術者試験】次の擬似言語は、逆ポーランド記法(後置記法)の式をスタックで…|正解「32」|ukamiru 過去問