科目B

基本情報技術者試験 科目B サンプル問題セット(2022年12月公表) 問14

次の記述中の に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は 1 から始まる。 要素数が 1 以上で,昇順に整列済みの配列を基に,配列を特徴づける五つの値を返すプログラムである。 関数 summarize を summarize({0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1})として呼び出すと,戻り値は である。 〔プログラム〕
○実数型: findRank(実数型の配列: sortedData, 実数型: p)
  整数型: i
  i ← (p × (sortedDataの要素数 - 1)) の小数点以下を切り上げた値
  return sortedData[i + 1]

○実数型の配列: summarize(実数型の配列: sortedData)
  実数型の配列: rankData ← {}  /* 要素数0の配列 */
  実数型の配列: p ← {0, 0.25, 0.5, 0.75, 1}
  整数型: i
  for (i を 1 から pの要素数 まで 1 ずつ増やす)
    rankDataの末尾 に findRank(sortedData, p[i])の戻り値 を追加する
  endfor
  return rankData
答えを選ぶ

出典:基本情報技術者試験 科目B サンプル問題セット(2022年12月公表) 問14(問題文は IPA の公開問題。図・数式・下線などはテキストに直して掲載。解説は当サイト作成)

科目Bの解き方と全問の一覧

解説に誤りを見つけたら、解説の誤りを報告してください。

答えと解説を見る

正解:ク

覚える知識

パーセンタイル(四分位数)の算出

整列済みデータで、割合 p の位置の値を取り出すと四分位数(パーセンタイル)が求まる。位置の計算で端数をどう丸めるかで値が変わる。

この問題で必要なこと

要素数 10 なので p×9 を切り上げて i とし、sortedData[i+1] を返す。0→i=0→0.1、0.25→2.25→3→0.4、0.5→4.5→5→0.6、0.75→6.75→7→0.8、1→9→1。結果は {0.1,0.4,0.6,0.8,1} でクが正解。

ひっかけ

切り上げではなく切り捨てる(0.3・0.5・0.7 になる)、あるいは要素番号に +1 するのを忘れると、ア〜キの組合せになる。