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

基本情報技術者試験空のスタックに対し、文字 'P' は次の数を push する操作、文字 'o' は pop…

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:normal
空のスタックに対し、文字 'P' は次の数を push する操作、文字 'o' は pop する操作(取り出すだけで値は捨てる)を表す。push する数は左から 1, 2, 3, 4, 5 の順に供給される(P が現れるたびに次の数を積む)。操作列 ops = "PPoPPPo"(左から1文字ずつ)を実行したあと、スタックの内容(底→頂上)はどれか。
○手続: run(文字型の配列: ops)
  スタック: stk          // 空で開始
  整数型: next ← 1       // 次に push する数
  整数型: i
  for (i を 1 から opsの要素数 まで 1 ずつ増やす)
    if (ops[i] が 'P')
      stk.push(next)
      next ← next + 1
    else
      stk.pop()
    endif
  endfor
{1, 3, 4}(底→頂上)
{1, 2, 3}
{1, 4, 5}(pop 対象を取り違えた並び)
{2, 3, 4}(底→頂上)
正解
ア.{1, 3, 4}(底→頂上)

供給順 1,2,3,4,5 を P のたびに積み、o のたびに頂上を捨てる。手順を追うと 2 と 5 が捨てられ、底から 1, 3, 4 が残るため アが正しい。

?選択肢ごとの解説

ア ○供給順 1,2,3,4,5 を P のたびに積み、o のたびに頂上を捨てる。手順を追うと 2 と 5 が捨てられ、底から 1, 3, 4 が残るため アが正しい。
イ ×pop 操作を無視して push した順の先頭 3 つ 1,2,3 を残した、'o' を反映しない誤りである。
ウ ×最後に push した 5 を捨てた直後の状態を取り違え、捨てた 5 を残し中間の 3 を落とした誤りである。
エ ×最初の 1 を捨てたと誤認して底を 2 にずらした、pop 対象(頂上)を取り違えた誤りである。
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。

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

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

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

【基本情報技術者試験】空のスタックに対し、文字 'P' は次の数を push…|正解「{1, 3,…」|ukamiru 過去問