新らしくなった基本情報 科目 B アルゴリズムとプログラミング サンプル問題2をJavaにしてみました

2023 年 4 月からIPA (独立行政法人情報処理推進機構)の基本情報技術者試験の制度が変更されました。

ここでは、「基本情報技術者試験 科目 B のサンプル問題」の中から、アルゴリズムとプログラミングの問題を取り上げ、Javaのソースコードを示します。

新人エンジニア研修に参加されている皆様の参考になれば幸いです。

問 2

次のプログラム中のabに入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は 1 から始まる。

次のプログラムは,整数型の配列 array の要素の並びを逆順にする。

【プログラム】

整数型の配列: array ← {1, 2, 3, 4, 5}
整数型: right, left
整数型: tmp

for (left を 1 から (arrayの要素数 ÷ 2 の商) まで 1 ずつ増やす)
right ←a
tmp ← array[right]
array[right] ← array[left]
b← tmp
endfor


【解答群】


a
b
array の要素数 – leftarray[left]
array の要素数 – leftarray[right]
array の要素数 – left + 1array[left]
array の要素数 – left + 1array[right]

【Javaプログラム】※Javaの添字は0始まりであるため元の擬似言語と全く同じにはなりません。

【結果】※先頭の0はダミー

[0, 5, 4, 3, 2, 1]

【プログラムの解説】

まず、ダミーの0を含めた整数型の配列を作成し、左端のインデックスを1、右端のインデックスを配列の長さから1引いたものに初期化します。

その後、左端から右端に向けて順に、左端と右端を交換していきます。このとき、一時変数 tmp を用いて値を一時的に保存します。

配列を逆順にソートするため、左端と右端が同じ位置に到達する前にループを終了します。

最後に、逆順にソートされた配列を出力します。出力には、配列を文字列として表現するための Arrays.toString() メソッドを使っています。