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

基本情報技術者試験スタック・キュー」の問題

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:normal
両端キュー(デック)dq に対し、pushFront(先頭に追加)、pushBack(末尾に追加)、popFront(先頭から取り出して返す)、popBack(末尾から取り出して返す)を行う。空の dq に次の操作を順に実行したあと、デックの内容(先頭→末尾)はどれか。
○手続: run()
  pushBack(150)
  pushFront(260)
  pushBack(370)
  popFront()
  pushFront(480)
  popBack()
{480, 370}
{260, 150}(前半の状態)
{480, 150}
{150,480}
正解
{480, 150}

両端への追加・削除を順に追うと、260 は popFront で、370 は popBack で除かれ、残るのは 150 と先頭に追加された 480 である。先頭→末尾で {480, 150} となるため ウが正しい。

?選択肢ごとの解説

ア ×popBack で除いたはずの 370 を残し、150 を落とした誤りで、末尾削除の対象を取り違えている。
イ ×操作前半の状態 {260,150} を答えた誤りで、後半の popFront・pushFront・popBack を反映していない。
ウ ○両端への追加・削除を順に追うと、260 は popFront で、370 は popBack で除かれ、残るのは 150 と先頭に追加された 480 である。先頭→末尾で {480, 150} となるため ウが正しい。
エ ×要素 {480,150} は正しいが先頭と末尾の並びを逆にした、両端の向きを取り違えた誤りである。

くわしく

デックは先頭・末尾の双方で追加削除ができるため、操作のたびに『どちらの端か』を厳密に追う必要がある。pushFront は並びの左へ、pushBack は右へ伸び、pop も対応する端から取る。

本番での押さえどころ

試験のコツ

デックを横一列に描き、各操作で左端か右端かを矢印で示しながら 1 操作ずつ更新する。

覚え方

『Front=左の先頭、Back=右の末尾』を固定して覚える。

よくある誤り

front と back を取り違え、追加・削除する端を逆にするミスが最も多い。

アルゴリズムとプログラミングの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-b-algo-0102

【基本情報技術者試験】スタック・キューの問題 — 解答・解説|ukamiru 過去問