新らしくなった基本情報 科目 B 20問バージョン アルゴリズムとプログラミング サンプル問題11をJavaにしてみました
2023 年 4 月からIPA (独立行政法人情報処理推進機構)の基本情報技術者試験の制度が変更されました。
ここでは、「基本情報技術者試験 科目 B のサンプル問題20問バージョン」の中から、アルゴリズムとプログラミングの問題を取り上げ、Javaのソースコードを示します。
新人エンジニア研修に参加されている皆様の参考になれば幸いです。
【Javaプログラム】
public class Q11 {
//本問で問われている関数
public static int[] binSort(int[] data) {
int n = data.length;
// Javaの配列が0始まりのため左端の要素にダミーの0を補っている
// 未定義を表現するために要素に-1を入れている
int[] bins = { 0, -1, -1, -1, -1, -1, -1 };
int i;
for (i = 1; i < n; i++) {
bins[data[i]] = data[i];
}
return bins;
}
public static void main(String[] args) {
// Javaの配列が0始まりのため左端の要素にダミーの0を補っている
int[] data = { 0, 2, 6, 3, 1, 4, 5 };
// 以下は正解選択肢の表示のための処理
int[] bindata = binSort(data);
for (int i = 0; i < bindata.length; i++) {
System.out.print(bindata[i]);
}
System.out.println();
// 以下は不正解の選択肢の例として(イ)の表示のための処理
int[] datai = { 0, 3, 1, 4, 4, 5, 2 };
bindata = binSort(datai);
for (int i = 0; i < bindata.length; i++) {
System.out.print(bindata[i]);
}
}
}
【結果】
0123456 012345-1 |
【プログラムの解説】
このJavaプログラムは、バケットソート(bin sort)アルゴリズムを実装しています。
まず、public static void main(String[] args)
メソッドで、2つの整数配列 data
と datai
を定義し、それぞれに整数値を格納しています。
data
配列の要素は、0を補って { 0, 2, 6, 3, 1, 4, 5 } となっています。
配列 datai
の要素は、不正解の選択肢として与えられているため、ランダムな整数値が含まれています。
次に、binSort()
メソッドが定義されています。
このメソッドは、引数で与えられた整数配列 data
をバケットソートアルゴリズムでソートし、ソートされた配列 bins
を返します。
バケットソートアルゴリズムでは、まず、各要素の値に対応するバケットを用意します。
このプログラムでは、7個のバケットを表す配列 bins
を定義しています。そのうち、0番目の要素はダミーの0であり、1番目から6番目の要素が各要素の値を表現しています。
バケットソートでは、各要素を対応するバケットに振り分けることで、ソートを行います。
メソッド内の for
ループでは、data
配列の各要素に対して、その値に対応するバケットに要素を挿入しています。
つまり、例えば data[1]
の値が2である場合、bins[2]
の値に2が格納されます。
main()
メソッドでは、まず data
配列に対して binSort()
メソッドを呼び出し、その結果を bindata
配列に代入しています。
そして、 bindata
配列をループで処理し、ソートされた結果を表示しています。
同様に、不正解の選択肢(イ)に対しても、同様の処理を行い、ソートされていない結果を表示しています。
投稿者プロフィール
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
- 新入社員2024年12月10日英語には敬語がないは本当か? 新人エンジニア向けに分かりやすく解説
- 新入社員2024年12月10日敬語とは? 新人エンジニア向けに分かりやすく解説
- 新入社員2024年12月10日クッション言葉とは? 新人エンジニア向けに分かりやすく解説
- 新入社員2024年12月10日「ECRS」と「システム開発」について、新人エンジニア向けに分かりやすく解説