新らしくなった基本情報 科目 B 20問バージョン アルゴリズムとプログラミング サンプル問題14をJavaにしてみました
2023 年 4 月からIPA (独立行政法人情報処理推進機構)の基本情報技術者試験の制度が変更されました。
ここでは、「基本情報技術者試験 科目 B のサンプル問題20問バージョン」の中から、アルゴリズムとプログラミングの問題を取り上げ、Javaのソースコードを示します。
新人エンジニア研修に参加されている皆様の参考になれば幸いです。
【Javaプログラム】
import java.util.Arrays;
public class Q14 {
static double findRank(double[] sortedData, double p) {
int i = (int) Math.ceil(p * (sortedData.length - 1));
return sortedData[i];
}
static double[] summarize(double[] sortedData) {
double[] rankData = new double[5];
double[] p = { 0, 0.25, 0.5, 0.75, 1 };
for (int i = 0; i < p.length; i++) {
rankData[i] = findRank(sortedData, p[i]);
}
return rankData;
}
//以下はテスト
public static void main(String[] args) {
double[] data = { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 };
double[] summary = summarize(data);
System.out.println(Arrays.toString(summary));
}
}
【結果】
[0.1, 0.4, 0.6, 0.8, 1.0] |
【プログラムの解説】
このプログラムは、与えられた数列の中からパーセンタイルを計算するための関数 findRank()
と、与えられた数列のパーセンタイルを計算する関数 summarize()
を定義し、それらを使って与えられた数列のサマリー(0%、25%、50%、75%、100%パーセンタイル)を計算して出力するものです。
findRank()
関数は、ソート済みの数列とパーセンタイルを受け取り、パーセンタイルに対応する値を返します。具体的には、以下の手順で計算しています。
- パーセンタイル
p
に対応するインデックスi
を計算します。i
は、(p * (sortedData.length - 1))
の結果を小数点以下を切り上げたものとなります。 sortedData[i]
の値を返します。
summarize()
関数は、与えられた数列のパーセンタイルを計算するために、0%、25%、50%、75%、100%パーセンタイルに対応するパーセンタイル値を計算して返します。具体的には、以下の手順で計算しています。
- 長さが5の配列
rankData
を用意します。 - パーセンタイル値が格納された配列
p
に対して、findRank()
関数を呼び出し、対応するパーセンタイルに対応する値をrankData
配列に格納します。 rankData
配列を返します。
main()
メソッドでは、数列 { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 }
を定義し、summarize()
関数を呼び出してサマリーを計算し、配列 summary
に格納しています。そして、Arrays.toString()
メソッドを使って summary
配列を文字列に変換して出力しています。
このプログラムは、パーセンタイルの計算方法を理解する手助けになるでしょう。また、小数点以下を切り上げる方法や、配列の初期化方法についても学ぶことができます。
投稿者プロフィール
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
- 新入社員2024年11月23日「ゲシュタルト崩壊」とシステム開発
- 新入社員2024年11月23日データベースでテーブル名やフィールド名にスペースを使うことは、一般的には推奨されていません
- 新入社員2024年11月23日「データにはなぜ型が必要なのか?」を2進数の観点から解説
- 新入社員2024年11月23日ディスプレイの解像度の意味と変更方法