令和元年度 秋期 システムアーキテクト試験 午前Ⅱ 問7

データが昇順に並ぶようにリストへデータを挿入するサブルーチンを作成した。このサブルーチンのテストに用いるデータの組合せのうち,網羅性の観点から適切なものはどれか。ここで,データは左側から順にサブルーチンへ入力する。

解答・解説

正解: イ. 3, 1, 4, 2

正解は イ です。

解法のポイント

データが昇順に並ぶようにリストへデータを挿入するサブルーチンにおいて、網羅性を高めるためには、リストへの挿入位置として考えられる以下の4つのパターンをすべてテストする必要があります。

  1. 空のリストへの挿入(最初のデータ)
  2. リストの先頭への挿入(既存の最小値より小さいデータ)
  3. リストの末尾への挿入(既存の最大値より大きいデータ)
  4. リストの中間への挿入(既存のデータの間に入るデータ)

選択肢 イ(3, 1, 4, 2)を左側から順に入力した場合の動きを確認すると、以下のようにすべてのパターンを網羅できていることがわかります。

  1. 3 を入力:空のリストに挿入される。リストの状態:[3]
  2. 1 を入力:3 より小さいため、リストの先頭に挿入される。リストの状態:[1, 3]
  3. 4 を入力:3 より大きいため、リストの末尾に挿入される。リストの状態:[1, 3, 4]
  4. 2 を入力:1 と 3 の間に入るため、リストの中間に挿入される。リストの状態:[1, 2, 3, 4]

各選択肢の解説

  • ア(1, 3, 2, 4):
    1. 1(空のリストへの挿入)→\rightarrow [1]
    2. 3(末尾への挿入)→\rightarrow [1, 3]
    3. 2(中間への挿入)→\rightarrow [1, 2, 3]
    4. 4(末尾への挿入)→\rightarrow [1, 2, 3, 4]
    • リストの先頭への挿入がテストされていません。
  • イ(3, 1, 4, 2):
    • 空のリスト、先頭、末尾、中間の4パターンすべてを網羅しているため適切です。
  • ウ(3, 4, 2, 1):
    1. 3(空のリストへの挿入)→\rightarrow [3]
    2. 4(末尾への挿入)→\rightarrow [3, 4]
    3. 2(先頭への挿入)→\rightarrow [2, 3, 4]
    4. 1(先頭への挿入)→\rightarrow [1, 2, 3, 4]
    • リストの中間への挿入がテストされていません。
  • エ(4, 3, 2, 1):
    1. 4(空のリストへの挿入)→\rightarrow [4]
    2. 3(先頭への挿入)→\rightarrow [3, 4]
    3. 2(先頭への挿入)→\rightarrow [2, 3, 4]
    4. 1(先頭への挿入)→\rightarrow [1, 2, 3, 4]
    • リストの末尾への挿入および中間への挿入がテストされていません。

Spineチーム