基本情報技術者試験 (FE) 科目 B — 練習問題 第 13 問 / 全 20 問 · 本番相当
スタックの操作
関連レッスン: 配列 — 添字が 1 から始まる仕様と操作
配列 操作 は 0 なら pop、それ以外なら その値を push することを表す。次のプログラムを実行したとき、出力される内容はどれか。
整数型の配列: 山 ← {0, 0, 0, 0}
整数型の配列: 操作 ← {5, 0, 0, 8, 3, 0}
整数型: 頂上 ← 0
整数型: 取出 ← 0
for (i を 1 から 6 まで 1 ずつ増やす)
if (操作[i] ≠ 0)
頂上 ← 頂上 + 1
山[頂上] ← 操作[i]
elseif (頂上 > 0)
取出 ← 山[頂上]
頂上 ← 頂上 - 1
endif
endfor
print(取出)
print(頂上)解説
正解: イ 3 1
操作を順に適用します。5 を push (頂上 = 1)、pop で 取出 = 5・頂上 = 0、次の pop は 頂上 > 0 が偽なので **何も起きません** (取出 は 5 のまま)、8 を push (頂上 = 1)、3 を push (頂上 = 2)、最後の pop で 取出 = 3・頂上 = 1。よって 3 と 1 が出力されます。
空のスタックに対する pop を elseif (頂上 > 0) で弾いている点が要です。この分岐を見落として 3 回目の操作でも何かを取り出したと考えると、以降の頂上がずれて答えが変わります。
スタックは後入れ先出し (LIFO) なので、最後に push した 3 が最初に取り出されます。配列 山 の中身は {8, 3, 0, 0} のまま残りますが、頂上 より上は「無効な領域」として扱われる点も押さえてください。
空のときの pop は elseif で弾かれて何も起きない。取出 は前の値のまま残る。
演習量を増やしたい方へ(おすすめ書籍)
擬似言語の記法の読み方から、トレースして答えを出すまでを一冊で通せる科目B特化本。手を動かして追う練習量を確保したいときの定番。
科目Bの出題パターンを網羅的に演習できる対策書。構文を理解した後、解法の型を身につける段階で効く。
科目Bの出題範囲を絞り込んだ薄型の対策書。頻出アルゴリズムと情報セキュリティを短期間で一周したいときに。
本セクションはAmazonアソシエイトのリンクを含みます。
プログラムの読み方でつまずいたら。
たいてっくが、アルゴリズムの追い方から SQL・データベース設計まで、1対1で学習をサポートします。「コードを目で追っても何をしているか分からない」段階からで大丈夫です。まずは無料相談から。
「教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。」
— H 様(DB・SQL コース受講)「体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。」
— M 様(DB・SQL コース受講)「大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。」
— K 様(DB・SQL コース受講)