基本情報技術者試験 過去問解説

ハッシュとは?基本情報技術者試験 令和6年度 科目A 問2を解説

基本情報技術者試験 令和6年度 科目A 問2は、ハッシュに関する理解を問う問題です。検索から入っても、問題文、選択肢、正解、解説、各選択肢がなぜ違うかをこのページだけで確認できます。

問題文

キーが小文字のアルファベット1文字(a, b, …, zのいずれか)であるデータを,大きさが10のハッシュ表に格納する。ハッシュ関数として,アルファベットのASCIIコードを10進表記で表したときの1の位の数を用いることにする。衝突が起こるキーの組合せはどれか。ASCIIコードでは,昇順に連続した2進数が,アルファベット順にコードとして割り当てられている。

この問題の出題ポイント

  • ハッシュの定義だけでなく、問題文中の条件がどの選択肢に当てはまるかを確認する。
  • 関連タグ: 数値表現、ハッシュ、数学。

選択肢

  1. a と i
  2. b と r
  3. c と l
  4. d と x正解

正解

: d と x

解説

ハッシュ関数 = ASCII コード10進表記の1の位。ASCII で 'a'=97。各文字の値: a=97(1の位7), b=98(8), c=99(9), d=100(0), e=101(1)…と続き、i=105(5), l=108(8), r=114(4), x=120(0)。衝突するのは1の位が同じ組合せ。d(0) と x(0) が共に 0 で衝突します。エが正解。

なぜ他の選択肢が違うのか

  • a=97 の1の位は 7、i=105 の1の位は 5 で異なるため衝突しません。

  • b=98 の1の位は 8、r=114 の1の位は 4 で異なるため衝突しません。

  • c=99 の1の位は 9、l=108 の1の位は 8 で異なるため衝突しません。

  • エ(正解)

    d=100 の1の位は 0、x=120 の1の位も 0 で衝突します。正解です。

解き方の整理

ハッシュの問題では、選択肢のキーワードだけで判断せず、問題文が示す条件と正解選択肢の説明が一致しているかを見ます。誤答選択肢は、似た用語を混ぜる、主体を入れ替える、目的や範囲を広げすぎる、という形で作られることが多いため、選択肢別解説まで確認しておくと復習効率が上がります。

関連問題

前後の問題

令和6年度 科目A の関連する問題

復習を続ける

間違えた問題、苦手タグ、模試履歴を保存して復習する導線を用意しています。広告なしPro、弱点分析、復習リマインダーは段階的に提供予定です。