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

基本情報技術者試験印刷ジョブを先着順(FIFO)で処理するキュー q がある。各ジョブは (id, ページ数) を持ち、deq…

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:normal
印刷ジョブを先着順(FIFO)で処理するキュー q がある。各ジョブは (id, ページ数) を持ち、deq したジョブのページ数を累計し、累計が初めて 5 ページ以上になった時点のジョブの id を返す。初期キュー(先頭→末尾)が {(A,2),(B,1),(C,3),(D,4)}(先頭=A)のとき、戻り値はどれか。enqueue/dequeue は末尾追加/先頭取り出し、isEmpty は空判定を表す。
○文字列型: firstReach()
  キュー: q ← {(A,2),(B,1),(C,3),(D,4)}
  整数型: acc ← 0
  ジョブ: job
  while (q.isEmpty が false)
    job ← q.dequeue()
    acc ← acc + job.ページ数
    if (acc ≧ 5)
      return job.id
    endif
  endwhile
  return "なし"
ジョブ B(累計3で誤判定)
ジョブ C
ジョブD
ジョブ A
正解
イ.ジョブ C

FIFO で A,B,C,D の順に処理し、ページ数を累計する。2→3→6 と進み、C を加えた時点で初めて 5 以上になるため、返る id は C となり イが正しい。

?選択肢ごとの解説

ア ×B を加えた時点の累計 3 を 5 以上と誤認した、しきい値判定を早まった誤りである。
イ ○FIFO で A,B,C,D の順に処理し、ページ数を累計する。2→3→6 と進み、C を加えた時点で初めて 5 以上になるため、返る id は C となり イが正しい。
ウ ×D まで処理しないと 5 に届かないと誤認した、C で既に 6 に達する点を見落とした遅れの誤りである。
エ ×先頭の A で即達すると誤認した、A 単独の 2 ページでは 5 に満たない点を無視した誤りである。
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。

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

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

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

【基本情報技術者試験】印刷ジョブを先着順(FIFO)で処理するキュー q…|正解「ジョブ C」|ukamiru 過去問