新らしくなった基本情報 科目 B 20問バージョン アルゴリズムとプログラミング サンプル問題12をJavaにしてみました
2023 年 4 月からIPA (独立行政法人情報処理推進機構)の基本情報技術者試験の制度が変更されました。
ここでは、「基本情報技術者試験 科目 B のサンプル問題20問バージョン」の中から、アルゴリズムとプログラミングの問題を取り上げ、Javaのソースコードを示します。
新人エンジニア研修に参加されている皆様の参考になれば幸いです。
【Javaプログラム】
public class Q12 {
//本問で問われている関数
public static double simRatio(char[] s1, char[] s2) {
int i, cnt = 0;
if (s1.length != s2.length) {
return -1;
}
for (i = 0; i < s1.length; i++) {
if (s1[i] == s2[i]) {
cnt = cnt + 1;
}
}
return (double) cnt / s1.length;
}
//以下はテスト
public static void main(String[] args) {
char[] s1 = { 'a', 'p', 'p', 'l', 'e' };
char[] s2 = { 'a', 'p', 'p', 'l', 'e' };
double rval = simRatio(s1, s2);
System.out.println(rval);
char[] s3 = { 'a', 'p', 'r', 'i', 'l' };
rval = simRatio(s1, s3);
System.out.println(rval);
char[] s4 = { 'm', 'e', 'l', 'o', 'n' };
rval = simRatio(s1, s4);
System.out.println(rval);
char[] s5 = { 'p', 'e', 'n' };
rval = simRatio(s1, s5);
System.out.println(rval);
}
}
【結果】
1.0 0.4 0.0 -1.0 |
【プログラムの解説】
このプログラムは、2つの文字列がどれだけ似ているかを表す相関係数を計算する simRatio()
関数を定義し、それをテストするためのものです。
simRatio()
関数は、2つの文字列 s1
と s2
を受け取り、以下の手順で相関係数を計算します。
s1
とs2
の長さが異なる場合、-1 を返します。s1
とs2
の要素を順番に比較し、一致する要素があるたびにcnt
を1ずつ増やします。cnt
をs1
の長さで割った値を相関係数として返します。
main()
メソッドでは、simRatio()
関数をテストするために、いくつかの文字列の組み合わせで simRatio()
を呼び出しています。
- 文字列 "apple" と "apple" を比較して、相関係数を表示します。
- 文字列 "apple" と "april" を比較して、相関係数を表示します。
- 文字列 "apple" と "melon" を比較して、相関係数を表示します。
- 文字列 "apple" と "pen" を比較して、相関係数を表示します。
このプログラムは、文字列比較による類似度の計算方法を理解する手助けになるでしょう。また、配列の要素を順番に処理する方法についても学ぶことができます。
投稿者プロフィール
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
- 新入社員2024年11月23日「ゲシュタルト崩壊」とシステム開発
- 新入社員2024年11月23日データベースでテーブル名やフィールド名にスペースを使うことは、一般的には推奨されていません
- 新入社員2024年11月23日「データにはなぜ型が必要なのか?」を2進数の観点から解説
- 新入社員2024年11月23日ディスプレイの解像度の意味と変更方法