この試験の対策ガイド

情報処理安全確保支援士試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は ウ

解説

逆ポーランド表記法(後置記法、RPN)は、演算子を被演算子(オペランド)の後ろに書く記法です。通常の中置記法 A+B×C を後置記法に変換します。まず演算子の優先順位を考えると、×が+より優先されるので、B×C が先に計算されます。B×C を後置記法で書くと BC× です。次に A+(B×C)の+は、A と「BC×」を加えるので、A BC× + となり、続けて書くと ABC×+ です。したがって選択肢cのABC×+が正解です。逆ポーランド記法は、演算子の優先順位を表すための括弧が不要になり、スタックを用いて左から順に評価できるため、計算機での式の評価に適しています。変換のコツは、中置記法を構文木(B×Cが下位、その結果とAの+が上位)に分解し、木を帰りがけ順(後行順、ポストオーダ)でたどることです。各部分式を「オペランド・オペランド・演算子」の順に並べると確実に変換できます。なお前置記法(ポーランド記法)は演算子を前に置き、中置記法は通常の数式の書き方で、3つの記法の違いを構文木のたどり方(前行・中行・後行順)と対応づけて理解しておくとよいでしょう。

なぜ他の選択肢は違うのか

選択肢 ア
+×CBA は誤りです。これは演算子を先頭に置く前置記法(ポーランド記法)に近い並びであり、しかも被演算子の順序が C・B・A と逆になっています。後置記法では演算子は被演算子の後ろに置かれ、被演算子は元の順序(A・B・C)を保つため、この並びは当てはまりません。前置記法は演算子を被演算子の前に置きますが、後置記法では後ろに置くため、そもそも演算子の位置が異なり、被演算子の順序も保たれません。
選択肢 イ
×+ABC は誤りです。演算子×・+が先頭にまとまって置かれており、これは前置記法(ポーランド記法)の形に近い並びです。後置記法では各演算子はその対象となる被演算子の直後に置かれるため、演算子が先頭に来るこの式は逆ポーランド表記法の表現になっていません。演算子が式の先頭にまとまるのは前置記法(ポーランド記法)の形であり、各演算子を対象の被演算子の直後に置く後置記法とは、演算子の配置が根本的に異なります。
選択肢 エ
CBA+× は誤りです。被演算子の順序が C・B・A と元の A・B・C から逆転しています。後置記法では被演算子の順序は中置記法と同じ A・B・C を保ち、演算子だけが後ろに移動します。順序が逆になっているこの式は正しい後置記法ではありません。後置記法では被演算子の順序は中置記法のA・B・Cをそのまま保ち、演算子だけが後ろへ移動します。順序がC・B・Aと逆転している時点で正しい後置記法ではありません。

解くときのポイント

逆ポーランド(後置)記法は演算子を被演算子の後ろに置く。優先順位の高い演算から部分式を作り、構文木を後行順でたどる。被演算子の順序は中置記法のまま、演算子だけ後ろへ。括弧不要でスタック評価に適する。