IPA過去問ドリル

平成23年度 秋期 基本情報技術者試験 午前 問7

テクノロジ/アルゴリズム

要素番号が0から始まる配列 TANGO がある。n個の単語が TANGO[1] から TANGO[n] に入っている。図は,n番目の単語を TANGO[1] に移動するために,TANGO[1] から TANGO[n−1] の単語を順に一つずつ後ろにずらして単語表を再構成する流れ図である。aに入れる処理として,適切なものはどれか。 (注)ループにおける条件は,変数名:初期値,増分,終値を示す。

平成23年度 秋期 基本情報技術者試験 午前 問7の図

出典:平成23年度 秋期 基本情報技術者試験 午前 問7

正解:ア

解説

この流れ図は,ループ変数iをn−1から0まで1ずつ減らしながら,TANGO[i]の内容をTANGO[i+1]に移すことで,配列全体を一つずつ後ろにずらす処理です。iの減少方向でTANGO[n−1]から先に移動させることで,上書きによるデータ消失を防ぎながら単語表を再構成できます。

選択肢ごとの解説

  • 正しい。iを大きい方から順に処理してTANGO[i]をTANGO[i+1]へ移すことで,上書きされる前に値を退避しながら全体を一つ後ろにずらせます。
  • 誤り。TANGO[n−i]という対称的な入れ替えでは,単純な後ろへのずらし処理にはならず,単語表が正しく再構成されません。
  • 誤り。添字の組合せがずれており,本来移動すべき要素と異なる要素を上書きしてしまいます。
  • 誤り。TANGO[n−i]からTANGO[i]への移動では,狙った「一つ後ろにずらす」処理と異なる並び替えになってしまいます。
基本情報技術者の過去問を演習モードで解く