スタックと木・逆ポーランド 想定問題 2
逆ポーランド記法で書かれた式を,スタック(後から入れたデータを先に取り出すデータ構造)を使って次のきまりで計算する。式「6 2 4 + × 9 3 ÷ -」を計算したときの結果と,計算の途中でスタックに積まれているデータの個数の最大値の組合せとして,最も適切なものはどれか。
きまり:式を左から1つずつ読む。数ならスタックに積む(PUSH)。演算子なら,スタックの上から2つの数を取り出し(POP),「先に積まれていた数 演算子 後に積まれていた数」を計算して,その結果をスタックに積む。式を読み終えたときにスタックに残っている数が計算の結果である。
計算の結果データの個数の最大値
解説
ポイント
逆ポーランド記法の式をスタックで計算し,結果と途中のスタックの個数の最大値を求める問題です。
考え方と解き方
スタックは中身を左が底,右が上として書きます。演算子が来たら上の2つを取り出し,「先に積まれていた数 演算子 後に積まれていた数」を計算します。
- 6,2,4 を積む → [6,2,4](3個)
- +:2 と 4 を出して 6 → [6,6]
×:6×6=36 → [36]
- 9,3 を積む → [36,9,3](3個)
÷:9÷3=3 → [36,3]
- −:36−3=33 → [33]。中置記法に直した 6×(2+4)−9÷3=33 とも合う
- 個数がいちばん多いのは 3個(2回)。答えは ④ 33,3個
ほかの選択肢
②(−33):最後の引き算で,後に積んだ 3 から先に積んだ 36 を引いてしまった値です。
⑤(13):6×2+4−3 と,左から順に計算してしまった値です。
覚えておくこと
- 逆ポーランド記法の計算:数は積み,演算子が来たら上の2つを取り出して計算し結果を積む。引き算・割り算は「下の数 演算子 上の数」の順(テキスト・覚えること)
- 引き算・割り算の順番を逆にしない(先に積んだ数から,後に積んだ数を引く・割る)(テキスト・ひっかけ)
類似する過去問:令和元年度 基礎科目 I-2-6、平成26年度 基礎科目 I-2-4、令和3年度 基礎科目 I-2-5
テキスト「スタックと木・逆ポーランド」を読む