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

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

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:normal
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 行だけ横に書き出して足す。

覚え方

『行合計は行を固定して横に足す』と動作を言語化して覚える。

よくある誤り

行と列の役割を入れ替え、列合計を計算してしまうミスが多い。

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

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

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

無料ではじめる →

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

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