基本情報技術者試験「探索」の問題
次の手続 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 つずつ指さし確認し、しきい値ちょうどの値の扱いに注意する。
覚え方
『より大きい=>、以上=≧』と不等号の意味をペアで覚える。
よくある誤り
> と ≧ を混同して境界値を数え入れる、または途中で走査を打ち切るミスが多い。
アルゴリズムとプログラミングの他の問題
次の擬似言語で表される手続 sumOdd を、引数として要素数 5 の整数型の配列 {12, 125, 1008,…次の擬似言語は、整数型の配列 arr に対して隣接交換を行う手続の一部であり、外側ループの 1 回目(1…次の擬似言語は昇順に整列された配列 arr に対する二分探索の手続である。arr = {2, 4, 6, 8, 10,…次の擬似言語で表される再帰手続 f を、引数 n = 20 で呼び出したとき、戻り値として返される値はどれか。
```…単方向連結リストの各ノードはメンバ val(整数)と next(次ノードへの参照。なければ NULL)をもつ。先頭ノード…スタックに対する push(積む)と…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-b-algo-0018