令和4年度 III-2

科目: 専門科目 / 分野: 情報工学部門 / 年度: 令和4年度

III-2 問題画像

出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」

逆ポーランド記法(後置記法)で表現された式「5 4 3 + * 2 1 + −」の計算結果を求める問題。

解説

この問題で問われていること

後置記法の式を、スタックを使って評価する問題。

解き方

① 後置記法: 数値はスタックに積み、演算子が来たら上の2つで計算して積み直す(引き算は「先に積んだ方−後の方」)
② 5 4 3 → +で5 7 → *で35 → 2 1 +で35 3 → −で32
③ 32(④)

正解が正しい理由

後置記法では、数値をスタックに積み、演算子が来たら、スタックの上から2つを取り出して演算し、結果を積む。5、4、3を積む(スタック: 5 4 3)。「+」で、4+3=7(スタック: 5 7)。「*」で、5×7=35(スタック: 35)。2、1を積む(スタック: 35 2 1)。「+」で、2+1=3(スタック: 35 3)。「−」で、35−3=32(スタック: 32)。したがって計算結果は32で、④が正しい。中置記法では、5×(4+3)−(2+1)に相当する。

この問題で必要な基礎

■ スタックとは
スタックは、データを上に積み重ねていき、取り出すときは一番上(最後に積んだもの)から取り出す仕組みです(皿を積み重ねて上から取るイメージ)。

■ 引き算の順番
演算子「−」でスタックから2つ取り出すとき、先に積んであった(下にあった)値から、後に積んだ(上にあった)値を引きます。この問題の最後の「−」は、35−3です(3−35ではありません)。

各選択肢について

覚えるべきポイント

後置記法(逆ポーランド記法)は、括弧が不要で、スタックで左から順に評価できる。演算子の直前の2つの値がオペランドとなる(引き算・割り算は順序に注意)。

キーワード: 逆ポーランド記法、後置記法、スタック、式の計算、データ構造、情報工学部門