令和6年度 ITパスポート試験 公開問題 問62

関数convertは,整数型の配列を一定のルールで文字列に変換するプログラムである。関数convertをconvert(arrayInput)として呼び出したときの戻り値が “AABAB” になる引数 arrayInput の値はどれか。ここで,arrayInput の要素数は1以上とし,配列の要素番号は1から始まる。

〔プログラム〕
図の説明テキスト

〔プログラム〕
○文字列型: convert(整数型の配列: arrayInput)
文字列型: stringOutput ← "" // 空文字列を格納
整数型: i

for (i を 1 から arrayInputの要素数 まで 1 ずつ増やす)
if (arrayInput[i] が 1 と等しい)
stringOutput の末尾 に "A" を追加する
else
stringOutput の末尾 に "B" を追加する
endif
endfor

return stringOutput

解答・解説

正解: エ. {1, 1, 2, 1, 0}

〔プログラム〕の処理内容を読み解くと、関数 convert は引数として渡された整数型の配列 arrayInput の各要素に対して、先頭から順に以下の処理を行っていることがわかります。

  • 要素の値が 1 と等しい場合:出力用文字列 stringOutput の末尾に "A" を追加する。
  • 要素の値が 1 と等しくない(それ以外)場合:出力用文字列 stringOutput の末尾に "B" を追加する。

問題では戻り値(stringOutput の最終的な値)が "AABAB" となる引数 arrayInput を求めています。
この戻り値を得るためには、配列の各要素を処理した結果が順番に以下の条件を満たす必要があります。

  • 1番目の要素: "A" となるため、値は 1
  • 2番目の要素: "A" となるため、値は 1
  • 3番目の要素: "B" となるため、値は 1以外
  • 4番目の要素: "A" となるため、値は 1
  • 5番目の要素: "B" となるため、値は 1以外

すなわち、配列の要素の並びは {1, 1, (1以外), 1, (1以外)} となっている必要があります。

各選択肢の解説

  • ア: {0, 0, 1, 2, 1}
    各要素を判定すると "B", "B", "A", "B", "A" となるため、戻り値は "BBABA" となり誤りです。
  • イ: {0, 1, 2, 1, 1}
    各要素を判定すると "B", "A", "B", "A", "A" となるため、戻り値は "BABAA" となり誤りです。
  • ウ: {1, 0, 1, 2, 0}
    各要素を判定すると "A", "B", "A", "B", "B" となるため、戻り値は "ABABB" となり誤りです。
  • エ: {1, 1, 2, 1, 0}
    各要素を判定すると "A", "A", "B", "A", "B" となるため、戻り値は "AABAB" となり 正解 です。

Spineチーム