科目Bアルゴリズム

2023年春 科目B 問4
アルゴリズムの過去問

まずは自分で考えて、理由を確かめよう。

LET'S TRY

問題文

次の記述中の □ に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。


関数addは,引数で指定された正の整数valueを大域の整数型の配列hashArrayに格納する。格納できた場合はtrueを返し,格納できなかった場合はfalseを返す。calcHash1とcalcHash2でハッシュ位置を決める。手続testの処理が終了した直後のhashArrayの内容は,□ である。


〔プログラム〕

○論理型: add(整数型: value)

整数型: i ← calcHash1(value)

if (hashArray[i] = -1) : hashArray[i] ← value : return true

else

i ← calcHash2(value)

if (hashArray[i] = -1) : hashArray[i] ← value : return true

endif

endif

return false

○整数型: calcHash1(整数型: value)

return (value mod hashArrayの要素数) + 1

○整数型: calcHash2(整数型: value)

return ((value + 3) mod hashArrayの要素数) + 1

○test()

hashArray ← {5個の -1}

add(3) : add(18) : add(11)

当てはまるものを、ひとつ選んでね。

1〜4キーで選択し、Enterキーで採点できます。

出典:令和5年度 基本情報技術者試験 科目B 問4
IPAの公開問題について ↗

LET'S UNDERSTAND

キホン猫と、理由を確かめよう。

自分で考えてから、解説を開いてみてね。

正解と解説を見る

正解は エ です。

add(3): calcHash1(3)=(3 mod 5)+1=4 → hashArray[4]=3。add(18): calcHash1(18)=(18 mod 5)+1=4、hashArray[4]=3≠-1 → calcHash2(18)=((18+3) mod 5)+1=2 → hashArray[2]=18。add(11): calcHash1(11)=(11 mod 5)+1=2、hashArray[2]=18≠-1 → calcHash2(11)=((11+3) mod 5)+1=5 → hashArray[5]=11。結果: {-1,18,-1,3,11}

同じ分野の問題を探す →

この問題を、学びのノートに。

Xでシェア ↗

学習ノートを読み込んでいます…