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

基本情報技術者試験キューの応用」の問題

テクノロジ系アルゴリズムとプログラミング難易度:normal
先入れ先出し(FIFO)のデータ構造を用いるのが最も適切な処理はどれか。
直前に行った操作を取り消すため、最後に実行した操作から順に元に戻していく処理
数式中の開き括弧を一時保持し、閉じ括弧が来たら直近の開き括弧と対応づける処理
深さ優先で経路を探索し、行き止まりで最後に分岐した地点まで戻ってやり直す処理
複数の利用者から届いた印刷要求を受付順に保持し、先に届いた要求から順に出力する処理
正解
複数の利用者から届いた印刷要求を受付順に保持し、先に届いた要求から順に出力する処理

プリントスプールは複数の印刷要求を受け付けた順に待たせ、先に届いたものから順に出力する。これは先入れ先出しそのものでありキューが適するため正しい。

?選択肢ごとの解説

ア ×最後の操作から順に元に戻すアンドゥは後入れ先出し(LIFO)であり、キューではなくスタックが適する場面である。
イ ×直近の開き括弧と対応づける括弧の整合判定はLIFOであり、スタックを用いる処理でFIFOには当てはまらない。
ウ ×行き止まりで最後の分岐へ戻る深さ優先探索のバックトラックはLIFOの挙動であり、スタックが対応しキューではない。
エ ○プリントスプールは複数の印刷要求を受け付けた順に待たせ、先に届いたものから順に出力する。これは先入れ先出しそのものでありキューが適するため正しい。

くわしく

キューは最初に入れた要素を最初に取り出すFIFO構造で、到着順の公平な処理に向く。印刷スプール、タスク待ち行列、幅優先探索などが典型例である。逆順・入れ子のスタック用途と取り違えないことが核心である。

本番での押さえどころ

試験のコツ

『受付順・到着順に処理』ならキュー(FIFO)、『最後のものから』ならスタック(LIFO)と動詞で判定する。

覚え方

キューは『レジの行列』。先に並んだ人から順に処理、と列のイメージで覚える。

よくある誤り

アンドゥや括弧対応など『最後のものを使う』処理までキューと誤る例が多い。来た順か逆順かで判別する。

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

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

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

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0124

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