アルゴリズムとプログラミング|令和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
```
- {0, 0, 1, 2, 1}
- {0, 1, 2, 1, 1}
- {1, 0, 1, 2, 0}
- ✓ これが正解{1, 1, 2, 1, 0}
解説
一なら片方の字、そうでなければもう片方を並べていきます。
この関数は、配列を先頭から順に見ていき、要素が一と等しければ一方の文字を、そうでなければもう一方の文字を末尾に足していきます。戻り値の文字列は、一文字目から順に一であったかどうかを写したものになります。求める文字列を左から読むと、一文字目と二文字目は一、三文字目は一以外、四文字目は一、五文字目は一以外という並びになります。この形に合う配列を探すと、一と一、次に一以外、次が一、最後が一以外となっているものです。よって、一、一、一以外、一、一以外の順に並んだものが当てはまります。一以外であれば零でも二でも同じ文字になるので、値そのものではなく一かどうかだけを見ます。
ほかの選択肢はなぜ違うのか
- 先頭が零なので、一文字目が一に対応する文字になりません。求める文字列は一文字目から一であることを示しているので、最初の要素だけで外れると分かります。一文字目で判定を打ち切れる肢です。
- 先頭が零なので、やはり一文字目から合いません。二番目以降には一が並んでいますが、先頭が違う時点で戻り値の一文字目が変わってしまいます。左から順に確かめるのが確実です。
- 先頭は一で合っていますが、二番目が零なので二文字目が変わってしまいます。求める文字列は二文字目も一に対応する文字です。二文字目まで見れば外れると分かります。
この問題に関係する言葉
- 配列
- 関数
- プログラムコンピュータへの命令をまとめたもの。著作権法ではソースプログラムそのものが保護され、その中のアイディアやアルゴリズムは保護されません。
出典:令和6年度 ITパスポート試験 問62(改変:原典の図表をテキストに書き起こした)
同じ単元をまとめて解くならアルゴリズムとプログラミングへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)