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

基本情報技術者試験探索」の問題

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:normal
次の手続 countAbove は、整数型の配列 arr のうち、しきい値 t より大きい(t は含まない)要素の個数を返す。arr = {45, 12, 78, 33, 60, 25, 90}(要素数 7、添字は 1 から)、t = 40 を与えて実行したとき、戻り値はどれか。
○整数型: countAbove(整数型の配列: arr, 整数型: t)
  整数型: cnt ← 0
  整数型: i
  for (i を 1 から arrの要素数 まで 1 ずつ増やす)
    if (arr[i] > t)
      cnt ← cnt + 1
    endif
  endfor
  return cnt
3 個
4 個
7 個
12 個
正解
4 個

条件 arr[i] > t(40 より大きい)を満たすのは 45, 78, 60, 90 の 4 要素である。これらのたびに cnt を増やすと 4 個となるため イが正しい。

?選択肢ごとの解説

ア ×60 を 40 以下と見誤るなど一致要素を 1 つ取りこぼし 3 個とした、比較の数え落としである。
イ ○条件 arr[i] > t(40 より大きい)を満たすのは 45, 78, 60, 90 の 4 要素である。これらのたびに cnt を増やすと 4 個となるため イが正しい。
ウ ×条件を適用せず全要素 7 個を数えた、if の判定を無視した誤りである。
エ ×要素数 7 や最大値 90 などと混同し、件数を実態より大きく 12 個と見積もった集計の誤りである。

くわしく

条件付きカウントでは『> か ≧ か』の境界判定と、全要素を漏れなく走査することの両方が要である。境界値が配列に含まれる場合は不等号の差が件数に直結する。

本番での押さえどころ

試験のコツ

条件に合う要素を 1 つずつ指さし確認し、しきい値ちょうどの値の扱いに注意する。

覚え方

『より大きい=>、以上=≧』と不等号の意味をペアで覚える。

よくある誤り

> と ≧ を混同して境界値を数え入れる、または途中で走査を打ち切るミスが多い。

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

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

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

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-b-algo-0018

【基本情報技術者試験】探索の問題 — 解答・解説|ukamiru 過去問