2022年からは高等学校で「情報Ⅰ」が共通必修科目となり、2025年度の大学入学共通テストからは受験における必須科目にもなりました。現代の情報社会において必要な知識やスキル、リテラシーを習得するため、あらゆる人にとって重要な科目であると位置づけられているのです。
近年は小学校や中学校でもプログラミングが必修となっており、ITに関する知識やスキルはもはや「持っていて当たり前」になってきているともいえます。それに伴い、企業や働く人の情報リテラシーの底上げが求められます。
では、実際にどのような内容やレベルでの学習をしているのでしょうか。それを体感すべく、4回に分けて2025年度の大学入学共通テストで実際に実施された「情報Ⅰ」の試験内容を紹介・解説します。実際に解いたり解説を見たりすることで、内容や難易度が体感できると思いますので、ぜひ実際に解きながら読み進めてみてください。
今回は全4問のうち第3問の内容と解説です。第3問は、プログラミングについて
なお、問題や解答は以下に公開されていますので、こちらも合わせてご覧ください。
令和7年度 本試験の正解https://www.dnc.ac.jp/kyotsu/shiken_jouhou/r7/r7_honsiken_seikai.html
第3問
次の文章を読み,後の問い(問1~3)に答えよ。(配点 25)
Kさんが所属する工芸部では毎年, 文化祭に向けた集中製作合宿を開催し, 複数の工芸品を部員全員で分担して製作している。 Kさんは今年, 工芸品を製作する担当の割当て作業を行うことになった。
問1
問題文
次の文章を読み,空欄(ア)~(オ)に当てはまる数字をマークせよ。
表1は今年製作する各工芸品 (1から順に番号を振る。) の製作日数である。製作日数は部員によって変わることはなく、 例えば工芸品1の製作日数はどの部員が製作しても4日である。 なお、 一つの工芸品の製作は一人の部員が担当し,完了するまでその部員は他の工芸品の製作には取り掛からない。
Kさんは図1の割当図を作成し、今年の工芸部の部員3名について,工芸品の番号順に割当てを決めていくことにした。
図1では, 最上段に日付を合宿初日から順に1日目 2日目 ・・・と表して記載している。その下に各部員(1から順に番号を振る。)に割り当てた工芸品の番号を,その製作期間を表す矢印とともに記載している。 例えば, 工芸品4は部員(ア)が(イ)日目から1日間製作することが,図1から読み取れる。
図1では工芸品4までが割り当てられており, 部員15日目で割当てがない。このことを, 部員1は5日目で空きであるという。Kさんは各工芸品の担当と期間を割り当てていく際、次の規則を用いた。
最も早く空きになる部員 (複数いる場合はそのうち最小の番号の部員)が, 空きになった日付から次の工芸品を担当する。 |
Kさんは, 工芸品5以降についても上の規則を用いて割り当て,各工芸品の担当と期間を一覧にした図2のような文面のメールを部員全員に送信した。
解説
(ア) 2(イ) 2(ウ) 2(エ) 3(オ) 5
図として⽰されている表の内容が理解できているかを問う問題です。実際に表を埋めることで答えを導くことができるので、埋めながら考えましょう。
まずは条件を確認します。問題文にある「一つの工芸品の製作は一人の部員が担当し、途中で別の工芸品には取り掛かれない」が条件にあたります。
次に、表1の各工芸品の製作日数を見ながら、どの部員が何を担当するかを考えます。既に工芸品4までは埋まっている状態なので、工芸品5から考えましょう。工芸品5の製作に取り掛かるのは、最も早く手が空く人です。それが誰かを見てみると、3日目で手が空く部員2なので、3日目から工芸品5の製作に取り掛かることになります。表1を見ると製作日数は3日であると分かるので、3日目から5日目までの3日間が製作日となります。
この考え方と同様に、次に早く手が空く部員3、その次に部員1…と表を埋めていきましょう。埋めると下記のような表になります。これと照らし合わせることでア~オを解答することができます。

問2
問題文
次の文章を読み, 空欄(カ),(ク)に当てはまる数字をマークせよ。また,空欄(キ)に入れるのに最も適当なものを,後の解答群のうちから一つ選べ。
Kさんはまず, 次の規則 (再掲) に従い, いくつかの工芸品がすでに割り当てられた状況で、 その次の工芸品の担当部員を表示するプログラムを作ることにした。
最も早く空きになる部員 (複数いる場合はそのうち最小の番号の部員) が,空きになった日付から次の工芸品を担当する。 |
最も早く空きになる部員の番号を求めるために, 各部員が空きになる日付を管理する配列 Akibi を用意する。 この配列の添字 (1から始まる。) は部員の番号であり, 要素はその部員が空きになる日付である。
例えば,図1の状況では、配列 Akibi は図3のようになる。 図1で部員1は5日目に空きになるため, 図3で要素 Akibi [1] は5となる。 同様に要素Akibi [3] は(カ)となる。
図3において, 要素 Akibi [(ウ)] が配列 Akibi の最小の要素であることから,部員(ウ)が最も早く空きになることがわかる。
この考え方に基づき, Kさんは配列 Akibi の要素と, 部員数が代入された変数 buinsu を用いて, 次に割り当てる工芸品の担当部員を表示するプログラムを作成した (図4)。 ここでは例として, (01) 行目で図3のように配列Akibi を設定している。
(01) Akibi = [5,3,(カ)]
(02) buinsu = 3 (03) tantou = 1 (04) buin を 2 から buinsu まで1ずつ増やしながら繰り返す: (05) | もし(キ)ならば: (06) LLtantou = buin (07) 表示する (“次の工芸品の担当は部員 “, tantou, “です。 “) |
仮に部員数が変わったとしても, 配列 Akibi と変数 buinsu を適切に設定すれば,このプログラムを用いることができる。 部員が5名に増えた場合,(01) 行目を例えば Akibi = [5,6,4,4, 4] に, (02) 行目をbuinsu = 5 に変更して図4のプログラムを実行すると,(06) 行目の代入が(ク)回行われ,「次の工芸品の担当は部員3です。」と表示される。
キの解答群
0 buin < tantou
2 buin > tantou 1 Akibi [buin] Akibi [tantou] 3 Akibi [buin] > Akibi [tantou] |
解説
(カ) 4
配列の基礎知識が問われる問題です。配列とは、情報を入れておくための箱のようなものです。この中には何番目のデータか分かるように番号をつけてデータを入れていくことができます。この番号を「添字(そえじ)」 といいます。この箱からは何番目かを指定することで、データを参照してくることができます。
例えば、配列 Fruitsに「りんご」「みかん」「すいか」という要素を順番に入れるとします。この場合、配列は Fruits[りんご, みかん, すいか] のように表現されます(クオーテーションは省略)。添字は通常の場合0から割り当てられ、りんごが 0、みかんが 1、すいかが 2となります。データは「Fruits(0)」のように、かっこの中に添字を入れることで参照することができます。「Fruits(0)」の場合は「りんご」というデータが参照されます。
問題文を見ると、配列の要素は「その部員が空きになる日付」で、添字は「部員の番号」とあります。この際、配列の添字は1から始まることに注意です。ここでは、部員1から空き日になる日付を配列の要素として入れていくということになります。
問1で埋めた表を見ると、部員1の空き日は5日目、部員2は3日目、部員3は4日目です。つまり、配列Akibiには[5,3,4]と要素が入ります。
(キ) 1
プログラミングの基本となる考え方が問われる問題です。プログラムでは基本的に3つ以上の数字を同時に比較することはせず、トーナメント形式のように1対1で比較していきます。例えば、担当1と担当2の日数を比較して、小さかった方と担当3を比較して…と繰り返すことで、最大値や最小値など任意の値を求めるのです。このプログラムでは、その比較の流れを表現しています。ここでは、考え方の一例を紹介します。
【1】問題文と図4を見て、このプログラムで何がしたいのかをざっくり把握する
→最も早く空きになる部員の番号を求め、次に割り当てる工芸品の担当部員を表示するプログラムを作成しようとしている
【2】プログラムの流れを見てそれぞれどのようなことをしているかを考える
(01) Akibi = [5,3,(カ)]
→各部員が空きになる日付を管理する配列 Akibi を用意する。
(02) buinsu = 3
→部員数は3人
(03) tantou = 1
→とりあえず、担当者1を基準として比較を始める
(04) buin を 2 から buinsu まで1ずつ増やしながら繰り返す
→比較対象をbuinに入れる。まずは担当者2から入れ、繰り返すごとに1ずつ数字を増やす
(05) | もし(キ)ならば:
→繰り返す条件
(06) LLtantou = buin
→条件(キ)に当てはまれば、tantou に buin を代入する
(07) 表示する (“次の工芸品の担当は部員 “, tantou, “です。 “)
→結果を表示する
【3】前後を見て、(キ)で何を問われているかを考える
(06)を見てみると、(キ)はtantou(比較の基準)が更新されるかされないかの分岐点となっています。このプログラムは最も早く空きになる部員の番号、つまり最も空き日が小さい部員の番号を求めるものです。部員1と2を比べて早く手が空く方(空き日が小さい方)を部員3と比較したいので、比較の基準が更新されるのは比較対象の方が空き日の数字が小さかった場合です。したがって、正解は Akibi[buin] < Akibi[tantou]となります。
(ク) 1
実際に数字を当てはめて考えてみましょう。
担当1(5日)ー担当2(6日)…5の方が小さいので比較の基準(tantou)は担当1のまま
担当1(5日)ー担当3(4日)…3の方が小さいので、比較の基準が担当3になる
担当3(4日)ー担当4(4日)…同じなので、比較の基準は担当3のまま
担当3(4日)ー担当5(4日)…同じなので、比較の基準は担当3のまま
tantouが更新されるのは1回のみです。
問3
問題文
次の文章を読み, 空欄(ケ)~(シ)に入れるのに最も適当なものを, 後の解答群のうちから一つずつ選べ。
次にKさんは, 工芸部の部員数と, 表1のような各工芸品の製作日数を用いて、 図2のような一覧を表示するプログラムを作ることにした。
表1をプログラムで扱うために, Kさんは工芸品の番号順に製作日数を並べた配列 Nissu (添字は1から始まる。) を用意した。 さらに, 工芸品数9が代入された変数 kougeihinsu, 各部員が空きになる日付を管理する配列Akibi, 部員数3が代入された変数 buinsu を用いて、図2の一覧を表示するプログラムを作成した(図5)。 最初はどの部員も合宿初日すなわち1日目で 空きであるため, (03) 行目で配列 Akibi の各要素を1に設定している。工芸品の番号を表す変数 kougeihin を用意し, (05)~ (11) 行目で各工芸品に対して順に担当と期間を求めていく。 破線で囲まれた (06) (09) 行目は問2における図4の (03)~ (06) 行目と同じもので,次に割り当てる工芸品の担当部員の番号を変数 tantou に代入する処理を行う。 (10) 行目で図2の1
行分を表示し, (11) 行目で担当部員が空きになる日付を更新する。
ケ・コ の解答群
0 buin
1 kougeihin 2 tantou 3 buinsu 4 kougeihinsu |
サ・シの解答群
0 Nissu [kougeihin]
1 Nissu [tantou] 2 Nissu [kougeihin] – 1 3 Nissu[tantou] – 1 4 Nissu [kougeihin – 1] 5 Nissultantou Nissu (tantou – 1] |
解説
まず、こうした穴埋め問題は、穴がある箇所だけを見ても分からないことがほとんどのため、全体を見ながら解いていきましょう。特に、繰り返しに関する問題は繰り返しの対象となるものをしっかり確認することが大切です。
(ケ) 1(コ) 4
問2のように、一つずつ順を追って考えていきましょう。
【1】問題文と図4を見て、このプログラムで何がしたいのかをざっくり把握する
→工芸部の部員数と各工芸品の製作日数を用いて、一覧を表示するプログラムを作成しようとしている
【2】プログラムの流れを見てそれぞれどのようなことをしているかを考える
(01)~(04)
→繰り返しのための準備
(05)→分からないので一旦とばす
(06)~(09)
→図4と同じように、一番空き日が早い(数字が小さい)人を調べ、作業を割り当てる部員を求めている
(10)図2の形式で出力する
→「工芸品1…部員1:1~4日目」のように9人目まで表示させる
(11)→分からないので一旦とばす
【3】(ケ)(コ)で何を問われているかを考える
(05)は繰り返しの対象にあたる部分です。何を繰り返すかを考えてみると、(10)を見ればわかるように、工芸品の数だけ答えを出力しようとしています。そのため、工芸品の数(kougeihinsu)だけ繰り返すことになります。
(サ) 2
実際に当てはめて考えてみましょう。⼯芸品の製作期間が終了する⽇付を出⼒するためには 、Akibi[tantou]に何を加えたものを出⼒すればよいかを問われています。単純に考えれば、空き日から製作日数を足せばよいと想像できます。では、実際に表と照らし合わせて考えてみます。
工芸品5の場合、製作日は3日目から5日目までの3日間です。空き日から製作日数を足してみると、Akibi[2]は3、Nissu[5]は3なので「6日目」と出力されることになってしまいます。この方法では、製作開始日(空き日)の1日と製作期間を足し合わせてしまっているのです。そのため「-1」をすることが必要で、答えは「Nissu [kougeihin] – 1 」となります。
(シ) 0
問題⽂を見ると、(11)⾏⽬では「担当部員が空きになる⽇付を更新する」としています。つまり、⼯芸品の製作を新たに割り振られた担当部員が、その製作を終えて空きになることになる⽇付を新たに配列 Akibi に登録しようとしているのです。
実際に工芸品5で見てみます。部員2の空き日の3日目から3日間製作し、次の空き日は6日目となっています。つまり、その部員の空き日を表す値(Akibi[tantou])に製作期間を足せば次の空き日が求められると分かります。よって、「Akibi[tantou]+Nissu [kougeihin] 」が答えです。
まとめ
今回は情報Ⅰの第3問を解説しました。この大問では読解力や思考力に加え、プログラミングに関する基礎知識が求められました。基礎さえ分かっていれば難易度は高くないですが、問題文を読んで、何が問われているかや要点をしっかり押さえる必要もあります。やはり、知識の深さや広さよりも、思考や読解の力が非常に大切なのです。
第1~3問までの解説を通じて、どのような能力がどれくらいのレベルで求められているのか、少し実感できてきたのではないでしょうか。次回は最後となる第4問の解説です!さらに難易度が上がりますが、ぜひ挑戦してみてください。