大学入学共通テスト(情報) 過去問
令和4年度(2022年度)追・再試験
問35 (<旧課程>情報関係基礎(第3問) 問3)

このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。

問題

大学入学共通テスト(情報)試験 令和4年度(2022年度)追・再試験 問35(<旧課程>情報関係基礎(第3問) 問3) (訂正依頼・報告はこちら)

次の文章を読み、後の問いに答えよ。

Eさんは英小文字だけによる長さ8文字のパスワードを使っているが、悪意を持った第三者が長さ8のあらゆる文字列をもれなく試せば、いずれはパスワードを当てられてしまうことに気付いた。そこでEさんは、プログラムを作る練習としてこのことをコンピュータで確かめてみることにした。

Eさんは初めに、自分が使っているパスワードと、プログラムで生成する文字列の一つとが一致するか確かめる手続きを作成することにした。なお、ここでは8文字ちょうどのパスワードだけを考えることにする。
自分が使っているパスワードを正解文字列と呼び、配列Seikaiの要素Seikai[0]からSeikai[7]に順に1文字ずつ格納されているとする。また、プログラムで生成する文字列を候補文字列と呼び、配列Kouhoの要素Kouho[0]からKouho[7]に順に1文字ずつ格納されているとする。Eさんは、候補文字列と正解文字列で一致している文字を数え、文字列全体が一致しているときに候補文字列を表示する手続きを図1のように作成した。

Eさんは次に、英小文字だけによる8文字の候補文字列を「aaaaaaaa」から「zzzzzzzz」まで規則的にもれなく生成するため、次のような文字列と数値列の対応を考えることにした。1文字は26種類の英小文字のいずれかであるから、aを0に、bを1に、……、zを25に対応させることにすれば、図2のように数値の配列Suutiと候補文字列を一対一に対応づけることができる。この対応を利用して、配列Suutiの数値を1ずつ変化させることで次々と候補文字列を生成することができる。図3のように、aからzまでの文字が配列Moziに格納されているとき、Kouho[i]は配列Suutiを使って( ウ )と表せる。

( ウ )にあてはまるものを次のうちから1つ選べ。
問題文の画像
  • Suuti[i]
  • Suuti[i]+1
  • Mozi[Suuti[i]]
  • Suuti[Mozi[i]]
  • Mozi[Suuti[i]+1]
  • Suuti[Mozi[i]+1]

次の問題へ

正解!素晴らしいです

残念...

この過去問の解説 (3件)

01

正解は「Mozi[Suuti[i]]」です。

 

まずは、それぞれの配列に何が格納されているかを整理しましょう。

配列Kouhoには英小文字そのものが格納されており、配列Suutiには英子文字に対応した数値が格納されています。

英子文字と配列Suutiの数値のひも付けは、図3の通り、aからzまでの英小文字が順番に格納されている配列Moziを使って表せます。

 

例えば、Kouho[0]の「d」を配列Suutiで表す場合を考えましょう。

・図2より、Suuti[0]は3

・図3より、Mozi[3]はd

 

この関係性を見ると、Kouho[0]Mozi[3]と同じです。

Mozi[3]の添え字(3)を表すためにSuuti[0]を使い、Kouho[0]Mozi[Suuti[0]と表すことができました。

よって、答えは「Mozi[Suuti[i]]」です。

参考になった数0

02

ここでは、Suuti[x] 及び Mozi[x] を使って、Kouho[x] を作り出したい、

という発想でこの問題を考えてみます。

 

例えば、x=0であるときを考えます。

Suuti[0] = 3 です。

また、Mozi[3] = 「d」 とわかります。

そして、Kouho[0] = 「d」となればよいので (図3を参照)

Kouho[0]=Mozi[Suuti[0]] とすればよいとわかります。

これは0文字目の場合で、すべての文字で同じにするためには、iを用いて

 

Kouho[i] = Mozi[Suuti[i]] とすればよいとわかりました。

まとめ

(補足) 

問題を解く上では、完璧な理解が求められる場合と、

上のような一部分的な理解で解けるものがあります。

特に、2026年現在の共通テスト「情報Ⅰ」のような時間制限が厳しいものに対しては、

試しに i=0 のときを考えるなどの工夫で解いてみるのもよいでしょう。

参考になった数0

03

この問題のポイントは、それぞれの配列には何を格納しているか把握することです。

Kouho[i]に格納されているのは候補の文字列なので、Kouho[i]と等しい文字列を表すものを選択する必要があります。

 

配列Suutiには配列Kouhoの文字列を数値にしたものが格納されています。したがって、この数値を文字列に変換する配列の引数とすればよいことがわかります。

 

よって、 正解は Mozi[suuti[i]] になります。

参考になった数0