基本情報技術者試験「2次元配列」の問題
2 行 3 列の 2 次元配列 t に次の値が格納されている(添字は行・列とも 1 から)。
t[1][1]=12, t[1][2]=8, t[1][3]=15
t[2][1]=20, t[2][2]=6, t[2][3]=9
次の手続 rowSum は引数 r で指定した行の要素をすべて合計して返す。rowSum(t, 2) を実行したとき、戻り値はどれか。
○整数型: rowSum(整数型の二次元配列: t, 整数型: r)
整数型: s ← 0
整数型: j
for (j を 1 から 3 まで 1 ずつ増やす)
s ← s + t[r][j]
endfor
return sア123
イ14
ウ35
エ320
正解
ウ.35
行番号 r=2 を固定し列 j を 1〜3 まで動かして加算する。20+6+9=35 となるため ウが正しい。
?選択肢ごとの解説
ア ×行や列を取り違えて複数行の値を合算するなどして 123 とした、走査範囲を広げすぎた誤りである。
イ ×第 2 行の一部 6+9=15 でもなく末尾付近だけを拾って 14 とした、加算範囲の取りこぼしである。
ウ ○行番号 r=2 を固定し列 j を 1〜3 まで動かして加算する。20+6+9=35 となるため ウが正しい。
エ ×列方向や全要素をまたいで合算して 320 とした、行に限定しなかった走査方向の誤りである。
✎くわしく
二次元表の行合計は行番号を固定して列を走査する。逆に列合計は列を固定して行を走査するため、どちらの添字を動かすかを取り違えると別の集計になる。
✓本番での押さえどころ
試験のコツ
固定する添字(r)と動かす添字(j)を明示し、対象行を 1 行だけ横に書き出して足す。
覚え方
『行合計は行を固定して横に足す』と動作を言語化して覚える。
よくある誤り
行と列の役割を入れ替え、列合計を計算してしまうミスが多い。
アルゴリズムとプログラミングの他の問題
次の擬似言語で表される手続 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-0135