次のプログラム中の a と b に入れる正しい答えの組合せを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 一つの要素だけが1で他の要素が0であるような整数型の配列による表現を、本問ではOne-Hot表現という。関数oneHotEncodingは、図のように、色の名前が格納されている要素数1以上の文字列型の配列を引数として受け取り、配列に含まれる色の名前(図の例では3種類)に基づいて、各要素をOne-Hot表現に変換し、整数型配列の配列に格納して返す。関数oneHotEncodingにおける変換の例を図に示す。

One-Hot表現は重複なし一覧との一致位置だけを1にする

頻出基本情報技術者試験2026年度 公開問題 科目B5/アルゴリズムとプログラミング / アルゴリズム

図: 関数oneHotEncodingにおける変換の例。引数の例:{"Red", "Green", "Blue", "Red"}。"Red"のOne-Hot表現:{1, 0, 0}、"Green"のOne-Hot表現:{0, 1, 0}、"Blue"のOne-Hot表現:{0, 0, 1}。引数の例に対応する戻り値:{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {1, 0, 0}}。
図: 関数oneHotEncodingにおける変換の例。引数の例:{"Red", "Green", "Blue", "Red"}。"Red"のOne-Hot表現:{1, 0, 0}、"Green"のOne-Hot表現:{0, 1, 0}、"Blue"のOne-Hot表現:{0, 0, 1}。引数の例に対応する戻り値:{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {1, 0, 0}}。
``` 〔プログラム〕 ○整数型配列の配列: oneHotEncoding(文字列型の配列: colors) 整数型: i, j, k 文字列型の配列: colorVector ← {} // 要素数0の配列 整数型の配列: tempVector 整数型配列の配列: oneHotVector ← {} // 要素数0の配列 /* 名前一覧の作成 */ for (i を 1 から colorsの要素数 まで 1 ずつ増やす) if (colorVector の要素のいずれにも colors[i]の値 が格納されていない) colorVectorの末尾 に a を追加する endif endfor /* One-Hot表現への変換 */ for (j を 1 から colorsの要素数 まで 1 ずつ増やす) tempVector ← {} // 要素数0の配列 for (k を 1 から colorVectorの要素数 まで 1 ずつ増やす) if ( b ) tempVectorの末尾 に 1 を追加する else tempVectorの末尾 に 0 を追加する endif endfor oneHotVectorの末尾 に tempVector を追加する endfor return oneHotVector ```

選択肢

正解と解説

正解: a: colors[i]の値、b: colors[j] が colorVector[k] と等しい

前半のループは重複のない色名一覧を作る処理なので、まだ登録されていない色名 colors[i] の値をそのまま colorVector の末尾へ追加します。後半は各色 colors[j] について一覧の要素を順に見て、一致した位置だけ1、それ以外は0を並べる処理なので、判定条件は colors[j] と colorVector[k] が等しいかどうかです。一覧側の要素が colors に含まれるかを問う条件では、常に真になって全要素が1になってしまいます。

選択肢ごとの解説

出典:令和8年度 公開問題 基本情報技術者試験 科目B 問5(IPA)

同じ分野の他の問題

最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。