基本情報技術者試験「2次元配列」の問題
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] を読むミスが多い。
アルゴリズムとプログラミングの他の問題
次の擬似言語で表される手続 sumOdd を、引数として要素数 5 の整数型の配列 {12, 125, 1008,…次の擬似言語は、整数型の配列 arr に対して隣接交換を行う手続の一部であり、外側ループの 1 回目(1…次の擬似言語は昇順に整列された配列 arr に対する二分探索の手続である。arr = {2, 4, 6, 8, 10,…次の擬似言語で表される再帰手続 f を、引数 n = 20 で呼び出したとき、戻り値として返される値はどれか。
```…単方向連結リストの各ノードはメンバ val(整数)と next(次ノードへの参照。なければ NULL)をもつ。先頭ノード…スタックに対する push(積む)と…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-b-algo-0024