アルゴリズムとプログラミング

基本情報技術者試験2次元配列」の問題

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:normal
3 行 3 列の 2 次元配列 m に次の値が格納されている(添字は行・列とも 1 から)。 m[1][1]=5, m[1][2]=9, m[1][3]=4 m[2][1]=7, m[2][2]=2, m[2][3]=3 m[3][1]=15, m[3][2]=1, m[3][3]=8 次の手続 transpose は m を転置して新しい配列 t に格納する(t[j][i] ← m[i][j])。実行後の t[1][3] の値はどれか。
○手続: transpose(整数型の二次元配列: m, 整数型の二次元配列: t)
  整数型: i, j
  for (i を 1 から 3 まで 1 ずつ増やす)
    for (j を 1 から 3 まで 1 ずつ増やす)
      t[j][i] ← m[i][j]
    endfor
  endfor
24
93
147
15
正解
15

転置の代入は t[j][i] ← m[i][j] であり、行と列が入れ替わる。t[1][3] に対応するのは m[3][1]=15 であるため エが正しい。

?選択肢ごとの解説

ア ×行・列の入れ替え方向を取り違え、無関係な要素を合算して 24 とした、添字対応の誤りである。
イ ×m[1][2] や m[2][1] などの要素を組み合わせて 93 とした、転置後の添字 (1,3) に対応する元位置の取り違えである。
ウ ×複数要素を足し込んで 147 とした、単一要素を読む処理を集計と取り違えた誤りである。
エ ○転置の代入は t[j][i] ← m[i][j] であり、行と列が入れ替わる。t[1][3] に対応するのは m[3][1]=15 であるため エが正しい。

くわしく

転置は『t の (行, 列) = m の (列, 行)』であり、t[1][3] は m[3][1] に対応する。代入式 t[j][i]←m[i][j] の添字の対応を正確に逆読みすることが核心である。

本番での押さえどころ

試験のコツ

知りたい t[a][b] に対し、元の m[b][a] を読むと覚え、添字を入れ替えてから値を引く。

覚え方

『転置は添字をひっくり返す』とそのまま覚える。

よくある誤り

行と列のどちらを先に入れ替えるか混同し、m[1][3] や m[3][3] を読むミスが多い。

アルゴリズムとプログラミングの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-b-algo-0024

【基本情報技術者試験】2次元配列の問題 — 解答・解説|ukamiru 過去問