応用情報技術者試験 令和4年秋期 問24
顧客に,A~Zの英大文字26種類を用いた顧客コードを割り当てたい。現在の顧客総数は8,000人であって,毎年,前年対比で2割ずつ顧客が増えていくものとする。3年後まで全顧客にコードを割り当てられるようにするためには,顧客コードは少なくとも何桁必要か。
ア:3 イ:4 ウ:5 エ:6
出典 IPA公開[過去問題]:https://www.ipa.go.jp/shiken/mondai-kaiotu/gmcbt80000008smf-att/2022r04a_ap_am_qs.pdf
顧客コードにはA〜Zの26種類が使われていますので、1桁で26種類の顧客コードを作ることができます。2桁では26 × 26 になりますのでA〜ZZまでの676種類の顧客コードを作ることができます。
現在は8,000人なので3桁あれば十分です。しかし、「毎年、前年度比で2割ずつ顧客が増えていく」とあるので、顧客は次のように増えていきます。
1年後:8,000人 × 1.2 = 9,600人
2年後:9,600人 × 1.2 = 11,520人
3年後:11,520人 × 1.2 = 13,824人
3年後には8,000人だった会員は13,824人まで増えます。先程の説明で8,000人の顧客を管理するには3桁必要だということがわかっていますが、3桁で管理できる限界は26 × 26 × 26 = 17,576となります。3桁で17,576種類の顧客コードが作れるなら3年後でも3桁で十分です。
正解は、「ア:3」です。
※3桁以上であれば3年後の顧客全員に顧客コードを割当てられるので4桁でも5桁でも構わないように思うかもしれませんが、データサイズで考えると大きく変わります。
※例えば3桁ならAAA〜ZZZですが、5桁ならAAAAA〜ZZZZとなります。「A」のデータサイズが8ビットの場合、3桁の場合は3バイト、5桁の場合は5バイトになります。8,000人のデータを登録した場合、3桁なら24,000バイト ≒ 23.4キロバイト、5桁なら40,000バイト ≒ 39キロバイトになります。無駄に桁数を増やすとデータサイズが増えるのでシステムとしての反応速度が遅くなったり、データベースの容量を少ない件数で圧迫することになります。