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

基本情報技術者試験整数を格納したキュー(先頭から取り出す…

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:normal
整数を格納したキュー(先頭から取り出す FIFO)がある。次の手続は、キューの要素が1個になるまで「先頭の2つを取り出し、その和を末尾に追加する」ことを繰り返し、最後に残った値を返す。初期状態でキューに先頭から順に 40, 70, 20, 90 が入っているとき、手続 fold() の戻り値はどれか。
○整数型: fold()
  整数型: a, b
  while (キューの要素数 > 1)
    a ← dequeue()
    b ← dequeue()
    enqueue(a + b)
  endwhile
  return dequeue()
220
110
90
330
正解
ア.220

FIFOで先頭2要素 a,b を取り出し a+b を末尾に追加する操作は、キュー内の総和を変えずに要素数を1ずつ減らす。要素が1個になるまで繰り返すと、最後に残る値は初期要素の総和 40+70+20+90=220 となる。

?選択肢ごとの解説

ア ○FIFOで先頭2要素 a,b を取り出し a+b を末尾に追加する操作は、キュー内の総和を変えずに要素数を1ずつ減らす。要素が1個になるまで繰り返すと、最後に残る値は初期要素の総和 40+70+20+90=220 となる。
イ ×110 は最初の1回で計算した和(40+70)にすぎず、処理を途中で止めた誤り。残りの要素を畳み込んでいない。
ウ ×90 は初期キューの末尾要素をそのまま答えたもので、手続を実行していない。
エ ×330 は和の計算過程で要素を重複して加算するなど、取り出し順を取り違えた誤り。総和は220を超えない。
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。

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

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

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

【基本情報技術者試験】整数を格納したキュー(先頭から取り出す…|正解「220」|ukamiru 過去問