戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2014年 春期 午前(科目A)08


問題文

長さの文字列をそれぞれ格納した配列がある。図は、配列に格納した文字列の後ろに、配列に格納した文字列を連結したものを、配列に格納するアルゴリズムを表す流れ図である。図中のa, bに入れる処理として、適切なものはどれか。ここで、1文字が一つの配列要素に格納されるものとする。
基本情報技術者 2014年 春期 午前(科目A) 問08の問題画像基本情報技術者 2014年 春期 午前(科目A) 問08の選択肢の画像

選択肢

(正解)

🔒 解説は解答すると表示されます

文字列配列の連結処理【午前解説】

正解の理由

正解は です。
図のループ指定は1起点で、最初のループ(k:1,1,m)はXの1番目からm番目までをZの先頭からそのまま埋める処理を示します。従ってプロセスaは です。次のループ(k:1,1,n)はYの1番目からn番目までを続けて格納するため、Zの格納先は既にXで使われているm個分を飛ばした位置、すなわち になります。選択肢アの a: と b: がこの意図に合致するため正解です。

解法ステップ

  1. 図のループ開始表示を読み取り、ループ1が k:1,1,m、ループ2が k:1,1,n であることを確認する。
  2. ループ1の処理 a は「X の k 番目を Z のどこに格納するか」を判断する:先頭から埋めるなら
  3. ループ2の処理 b は「Y の k 番目を Z のどこに格納するか」を考える:X で既に m 個を使っているので
  4. 選択肢と照合して、a が 、b が の組が一致するものを選ぶ。

選択肢別の誤答解説

  • ア(正解):a = 、b = 。ループ順序・添字ともに図の指定に合致。
  • イ:b が だが、これはYをZの n 個後ろから格納することになり誤り。Yを続けて格納する場合のオフセットはmであるべき。
  • ウ:a が となっており、ループ1でXを扱うはずなのにYを扱っているためループ対象が逆。
  • エ:a がY、b が であり、両方ともループ対象とオフセットが間違っている。

よくある誤解

  • ループの添字が0起点だと誤認する:図では k:1,1,m と明記されており、0起点に直すと式が変わるため注意が必要です。
  • Yの格納先を としてしまう誤り:YはXの直後から始めるのでオフセットは常にmです。
  • 先にYを格納する、あるいはXとYを逆に扱う混同:ループの順序とラベル(ループ1がX, ループ2がY)を確認すること。

補足コラム

  • 0起点配列(プログラミング言語によっては一般的)で表現する場合:Xの要素は 、Yは 。このときのコピーは以下のようになります(Python風)。
# 0起点の例
Z = [''] * (m + n)
for k in range(m):
    Z[k] = X[k]            # X[0]..X[m-1] -> Z[0]..Z[m-1]
for k in range(n):
    Z[m + k] = Y[k]        # Y[0]..Y[n-1] -> Z[m]..Z[m+n-1]
  • 計算量はコピー操作のみなので時間計算量は O(m + n)、追加メモリは結果配列Zのため O(m + n) 必要です。
  • 空文字列(m=0 または n=0)の場合も、同じ式で対応可能です。例えば m=0 なら Y を に格納()することになります。

FAQ

Q1. 添字が1起点と0起点で答えは変わりますか?
A1. はい。図は1起点なので解は上記の通りですが、問題文が0起点なら格納先式はすべて「−1」の調整が必要です(例: 等)。
Q2. もし図のループ順が逆ならどう判断しますか?
A2. ループの順序が逆なら先にYをZの先頭に格納し、その後XをZのY分のオフセットへ格納するように式を反転させます。必ず図のループ順を確認してください。
Q3. 文字列ではなくバイト列や構造体でも同じですか?
A3. 基本原理は同じで、単位が文字であれバイトであれ、要素単位で順にコピーすれば良く、インデックス管理が重要です。

関連キーワード: 文字列連結, 配列コピー, 添字, インデックス設計, ループ制御, O(m+n), 1起点インデックス, 0起点インデックス, 配列操作, 境界確認
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について