アルゴリズムとプログラミング
基本情報技術者試験|空のスタックに対し、文字 'P' は次の数を push する操作、文字 'o' は pop…
空のスタックに対し、文字 '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 対象(頂上)を取り違えた誤りである。
アルゴリズムとプログラミングの他の問題
印刷ジョブを先着順(FIFO)で処理するキュー q がある。各ジョブは (id, ページ数) を持ち、deq…次の擬似言語は、文字列 s を左から走査し、スタック頂上と同じ文字が来たら頂上を pop して両者を消し、異なれば…容量 4 の循環キュー(リングバッファ)を配列 buf[1..4] で実装する。head は次に取り出す位置、tail…同じ入力列 1, 2, 3, 4 を、(A) スタック(push 後にすべて pop)と (B) キュー(enqueue…スタックに対する push(積む)と…キューに対する enqueue(末尾に追加)と…次の擬似言語は、スタックを用いて文字列中の丸括弧の対応が正しいかを調べ、正しければ "OK"、誤っていれば "NG"…次の擬似言語は、逆ポーランド記法(後置記法)の式をスタックで評価する手続である。トークン列を左から処理し、数値なら…
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。
基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。
登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。
作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0104
