※本情報は解説作成時点のもので、閲覧時点では法改正等により情報が変更になっている場合がございます。あらかじめご理解いただければ幸いです。
正解は「A:8」です。
この問題では、配列 data の中から配列 key と同じ並びをすべて探す関数 search の処理回数を問われています。繰り返し処理の条件を正確に理解することがポイントです。
この記事では、基本情報技術者試験(FE)試験(令和7年度)で出題された過去問の第4問「配列の部分一致検索」について、試験対策の観点からわかりやすく解説します。
search関数の仕組み
search(data, key)=keyの並びと一致するdata内の先頭要素番号を配列で返す
関数 search は、二重ループで data の各位置に key を照合します。内側ループで j が key の最後まで一致すると、その i の値を結果配列 result に追加します。途中で不一致があれば内側ループは終了し、次の i に進みます。
条件式 β の回数計算
data={“a”,“b”,“a”,“b”,“c”,“a”,“b”,“c”}, key={“a”,“b”,“c”} の場合、照合が成功する i の値は 1,3,6 の3箇所です。
しかし、内側ループの if 文(βの条件)は key の長さ分 j=1から3まで繰り返されるので、各一致箇所で j=1,2,3 がそれぞれ真となります。
したがって β の行が真となる合計回数は 3箇所×key長3 = 9 回となりますが、最終 j=lenkey の場合のみ result に i を追加するので、出力に関わる回数は 3 回です。
他の選択肢との違い
- 単純一致:配列全体ではなく部分的な一致を確認する点で異なる
- 線形探索:すべての要素を順番に見るのに対して、部分一致照合では内側ループが追加される
βの条件式の回数計算を正確に理解することが重要です。
問われているポイント
この問題では、配列処理や二重ループの動作を正確に追えるかが問われています。
条件式や繰り返し回数の理解が合否のポイントです。
気を付けてほしい点(勘違いしやすいポイント)
- i と j のループ範囲を正確に把握する
- β の条件式が真になる回数と result に追加される回数を混同しない
補足
二重ループの処理回数は、部分一致検索や文字列検索の理解にもつながります。
基本情報技術者試験(FE)試験での出題パターン
配列操作やループ回数を問う問題は、基本情報技術者試験で定番の出題です。
search関数のような部分一致処理はアルゴリズム理解の基本として押さえておきましょう。
この知識が使われている問題
まとめ
- search関数は二重ループで key の部分一致を確認する
- β 条件式が真となる回数は key の長さ×一致箇所数
- 出力 result に追加されるのは一致箇所の数のみ