戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2019年 秋期 午前(科目A)09


問題文

配列が図2の状態のとき、図1の流れ図を実行すると、配列Bが図3の状態になった。図1の a に入れる操作はどれか。ここで、配列A,Bの要素をそれぞれとする。
基本情報技術者 2019年 秋期 午前(科目A) 問09の問題画像

選択肢

(正解)

配列Aから配列Bへの座標変換(回転)【午前2 解説】

要点まとめ

  • 結論:配列Aを90度時計回りに回転させる操作は B(j,7-i) ← A(i,j) で表され,選択肢はエが正解です。
  • 根拠:i を行(下方向),j を列(右方向)とすると行→列,列→(7−行) の変換で90度時計回りになるためです。
  • 差がつくポイント:代表点を3点以上確認して写像の向き(時計回りか反時計回りか)と原点(反転の有無)を確かめることです。

正解の理由

正解は の B(j,7-i) ← A(i,j) です。
理由は次のとおりです。配列のインデックス i が「下方向」、j が「右方向」を表すとき,ある要素 A(i,j) を90度時計回りに回転すると、新しい行は元の列 j になり,新しい列は元の行 i を下から見て反転した位置 (N−1−i, ここで N=8) になります。したがって一般式は B(j, N−1−i) ← A(i,j) であり,本問では N−1=7 のため B(j,7-i) ← A(i,j) が対応します。図2の代表点(例えば A(0,7) が B(7,7) に,A(3,0) が B(0,4) に)などを当てはめれば,図3の配置と一致するのでエが正解です。

よくある誤解

  • 「i と j を逆に見てしまう」:行と列の役割を取り違えると90度回転と180度反転を混同します。
  • 「反転軸の向き(N−1 の扱い)を忘れる」:回転では座標の反転(7−i 等)が必要になる点を見落としやすいです。
  • 「代表点を1つだけ確認する」:1点だけだと反時計回りや鏡映と区別できないため,複数点で検証してください。

解法ステップ

  1. i(行)と j(列)の定義を確認する(i は下方向,j は右方向)。
  2. 図2→図3 の変化で,ある分かりやすい点を対応づける(例:角の点や直線状のまとまり)。
  3. 行が列に,列が行に移るかどうかを判定する(入れ替えがあるなら回転の可能性)。
  4. 反転(N−1−i や N−1−j)が必要か確認する(向きが逆になる場合)。
  5. 得られた変換式と選択肢を照合して一致するものを選ぶ。

選択肢別の誤答解説

  • ア: B(7-i,7-j) ← A(i,j)
    • これは180度回転(あるいは両軸反転)に相当します。行も列も反転するため,90度回転の図とは合いません。
  • イ: B(7-j,i) ← A(i,j)
    • これは90度反時計回り(左回り)の変換です。向きが逆なので図の向きと一致しません。
  • ウ: B(i,7-j) ← A(i,j)
    • これは水平方向(列)だけ反転する操作で,行と列の入れ替えがなく回転にはなりません。
  • エ: B(j,7-i) ← A(i,j)
    • これは行列全体を90度時計回りに回転する式で,図の変化と整合します(正解)。

補足コラム

  • 8×8 の正方行列での一般形:N×N 行列(0〜N−1)の90度時計回りは B(j, N−1−i) ← A(i,j),反時計回りは B(N−1−j, i) ← A(i,j) です。
  • 視覚的に判断するときは「上の行が右の列になる(時計回り)」か「上の行が左の列になる(反時計回り)」で素早く識別できます。
以下は変換を確かめる簡単な例(Python)。A の★位置をリストで与えて B を作る処理です。
N = 8
A_stars = [(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),
           (1,0),(2,0),(3,0),(3,1),(3,2),(3,3),(3,4),
           (4,0),(5,0),(6,0),(7,0)]
B = set()
for i,j in A_stars:
    B.add((j, N-1-i))  # エ: B(j,7-i) <- A(i,j)
print(sorted(B))

FAQ

Q1. なぜ N−1(ここでは7)を使うのですか?
A1. インデックスが0始まりなので,反転すると位置は N−1−i になります。N=8 の場合は 7−i です。
Q2. 90度回転を見分けるコツは?
A2. 「上端の水平線 → 右端の垂直線」なら時計回り。「上端 → 左端」なら反時計回りです。
Q3. 代表点はいくつ確認すれば十分ですか?
A3. 3点(角2つ+内部の1点)くらい確認すれば回転・反転・鏡映の区別が確実です。

関連キーワード: 配列変換、2次元配列、90度回転、座標変換、行列インデックス、ループ設計、アルゴリズム、配列操作
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について