基本情報トップに戻る
練習問題難易度: 標準2023年度

基本情報技術者 過去問練習問題 第4問

問題

関数 add は、引数で指定された正の整数 value を大域の整数型の配列 hashArray に格納する。格納できた場合は true を返し、格納できなかった場合は false を返す。ここで、整数 value を hashArray のどの要素に格納すべきかを、関数 calcHash1 及び calcHash2 を利用して決める。手続 test は、関数 add を呼び出して hashArray に正の整数を格納する。手続 test の処理が終了した直後の hashArray の内容はどれか。正しい答えを解答群の中から選べ。ここで、配列の要素番号は 1 から始まる。

の図表

選択肢

  1. 1{-1, 3, -1, 18, 11}
  2. 2{-1, 11, -1, 3, -1}
  3. 3{-1, 11, -1, 18, -1}
  4. 4{-1, 18, -1, 3, 11}
  5. 5{-1, 18, 11, 3, -1}

正解

4. {-1, 18, -1, 3, 11}

詳しい解説を見る

解説

ハッシュ法(衝突時は別関数で再計算するオープンアドレス法)の問題です。hashArray は要素数 5・全要素 -1 から始まり、calcHash1(v)=(v mod 5)+1、calcHash2(v)=((v+3) mod 5)+1 です。add(3):calcHash1=4 が空なので 3 を格納 →{-1,-1,-1,3,-1}。add(18):calcHash1=(18 mod 5)+1=4 は埋まっているので calcHash2=(21 mod 5)+1=2 に 18 を格納 →{-1,18,-1,3,-1}。add(11):calcHash1=(11 mod 5)+1=2 は埋まっているので calcHash2=(14 mod 5)+1=5 に 11 を格納 →{-1,18,-1,3,11}。よって正解はエです。(出典: 令和5年度 基本情報技術者試験 科目B 問4)

一問一答

科目A 180問+科目B 60問

練習問題の関連問題

この調子で演習を続けよう

スキマ資格では基本情報の全2398問を分野別・難易度別に体系的に学習できます。基本情報技術者は科目A(広く浅く)と科目B(プログラミング・アルゴリズム)の両輪での対策が必要です。