BLOG

2025.06.13ブログ

2025大学入学共通テスト 情報I 大問3解説:工芸部の担当割りのプログラム Part1

皆様、こんにちは。タイムレスエデュケーションの鈴木です。

2025年大学入学共通テストの問題解説の続編です。前回は、大学共通テストの情報Ⅰにて出題された「7セグ」について解説しました。今回は大問3の工芸部の担当割のプログラムについての問題です。一見プログラムのコードが書いてあるので難しいと思われるかもしれません。ただ、作業の順序と内容を具体化できれば答えが見えてくると思います。いわゆる論理的思考です。あまり馴染みながない人でも分かるよう解説をさせていただきますのでぜひご覧ください。ではいってみましょう!



画像出典:ImageFX

出題内容


Kさんが所属する工芸部では毎年、文化祭に向けた集中製作合宿を開催し、複数の工芸品を部位員全員で分担して製作している。Kさんは今年、工芸品を製作する担当の割当て作業を行うことになった。

出典:独立行政法人 大学入試センター

問1


次の文章を読み、空欄【ア】〜【オ】に当てはまる数字を選べ。

表1は今年製作する各工芸品(1から順に番号を振る。)の製作日数である。 製作日数は部員によって変わることはなく、例えば工芸品1の製作日数はどの部員が製作しても4日である。 なお、一つの工芸品の製作は一人の部員が担当し、完了するまでその部員は他の工芸品の製作には取り掛からない。



表1 各工芸品の製作日数


Kさんは図1の割当図を作成し、今年の工芸部の部員3名について、工芸品の番号順に割当てを決めていくことにした。



図1 割当図(工芸品4まで)


図1では、最上段に日付を合宿初日から順に1日目、2日目、・・・と表して記載している。 その下に各部員(1から順に番号を振る。)に割り当てた工芸品の番号を、その製作期間を表す矢印とともに記載している。 例えば、工芸品4は部員 ア が イ 日目から1日間製作することが、図1から読み取れる。


図1では工芸品4までが割り当てられており、部員1が5日目で割当てがない。 このことを、部員1は5日目で空きであるという。 Kさんは各工芸品の担当と期間を割り当てていく際、次の規則を用いた。 最も早く空きになる部員(複数いる場合はそのうち最小の番号の部員)が、空きになった日付から次の工芸品を担当する。 Kさんは、工芸品5以降についても上の規則を用いて割り当て、各工芸品の担当と期間を一覧にした図2のような文面のメールを部員全員に送信した。



図2 各工芸品の担当と期間を一覧にしたメールの文面


以上を手作業で作成するのが手間だと感じたKさんは、図2のような文面を自動的に表示するプログラムを作成しようと考えた。



解説


まず問題の内容を要約すると、工芸品製作のための担当割を決めるという話です。工芸品ごとに製作日数は違うものの、部員の作業時間は全員同じです。そして割当の順序は空いた人から次の工芸品を作成していきます。この概要が整理できていれば、問1は分かるかと思います。まず、【ア】、【イ】ですが、工芸品4の担当者と製作開始日が問われています。図1を見ると、部員2が2日目から製作しますね。そのため、解答は以下の通りとなります。


【ア】の答えは「2」、【イ】の答えは「2」


そして、【ウ】、【エ】、【オ】ですが、工芸品5の担当者と何日間製作するのかが問われています。先程整理した情報の通り、空いた人から順に次の工芸品を担当するので、次に早く作業が空く人は図1を見ると部員2であり、製作日数は表1にある通り、3日なので、3日から5日までの製作期間となります。そのため、解答は以下の通りとなります。


【ウ】の答えは「2」、【エ】の答えは「3」、【オ】の答えは「5」




学びのポイント


この問題で対象となる「作業可能時期」や「所要日数」といった情報は、あらゆる計画立案の基礎です。これらを正確に把握し、整理・活用する能力は、日々のスケジュール管理から、より大きなプロジェクトの推進に至るまで、非常に重要です。特に「次に誰が何をすべきか」という判断基準は、タスク管理や資源の最適配分という、効率性を追求する上で普遍的なテーマにつながっているでしょう。情報を構造化し、優先順位を見極める視点は、多忙な現代社会において非常に価値のあるスキルです。また、一見複雑な状況に直面した際にも、定められたルールに従って情報を丁寧に整理し、図表から本質的なデータを読み取るというプロセスは、表面的な情報に流されず、論理的に物事を判断するスキルにつながっていきます。日常生活や学校の課題、業務において多角的な要素が絡む課題に取り組む際も、このように要素を分解し、一つ一つを丁寧に考察するアプローチは、効果的な問題解決に不可欠なスキルです。



問2


次の文章を読み、空欄【カ】【ク】に当てはまる数字をマークせよ。また、空欄【キ】 に入れるのに最も適当なものを、後の解答群のうちから一つ選べ。


Kさんはまず、次の規則に従い、いくつかの工芸品がすでに割り当てられた状況で、その次の工芸品の担当部員を表示するプログラムを作ることにした。


最も早く空きになる部員(複数いる場合はそのうち最小の番号の部員)が、空きになった日付から次の工芸品を担当する。


最も早く空きになる部員の番号を求めるために、各部員が空きになる日付を管理する配列 Akibi を用意する。 この配列の添字(1から始まる。)は部員の番号であり、要素はその部員が空きになる日付である。 例えば、図1の状況では、配列 Akibi は図3のようになる。 図1で部員1は5日目に空きになるため、図3で要素 Akibi [1] は5となる。 同様に要素 Akibi [3]は【カ】となる。



図1 割当図(工芸品4まで)(再掲)



図3 図1の状況に対応する配列 Akibi


図3において、要素 Akibi【ウ】が配列 Akibi の最小の要素であることから、部員【ウ】が最も早く空きになることがわかる。


この考え方に基づき、Kさんは配列 Akibi の要素と、部員数が代入された変数 buinsuを用いて、次に割り当てる工芸品の担当部員を表示するプログラムを作成した(図4)。 ここでは例として、(01) 行目で図3のように配列 Akibi を設定している。



図4 次に割り当てる工芸品の担当部員を表示するプログラム


仮に部員数が変わったとしても、配列 Akibi と変数buinsuを適切に設定すれば、このプログラムを用いることができる。 部員が5名に増えた場合,(01)行目を例えば Akibi = [5, 6, 4, 4, 4]に、(02) 行目を buinsu = 5 に変更して図4のプログラムを実行すると、(06) 行目の代入が【ク】回行われ、「次の工芸品の担当は部員3です。」と表示される。


キの解答群  ⓪ buin < tantou、① Akibi[buin] < Akibi[tantou]、② Akibi[buin] > Akibi[tantou]、③ buin > tantou



用語の説明


問題の解説の前に馴染みのない「変数」と「配列」について用語について簡単に説明をします。

変数とは?


「変数」とは、一言でいうと「データを入れておくための名前付きの箱」です。 プログラムの中で、数字や文字などの情報(データ)を一時的に保存しておきたいときに使います。箱には好きな名前(変数名)を付けることができ、その名前を呼べば、いつでも中身を取り出したり、新しい中身に入れ替えたりできます。今回の問題では、「buinsu」や「tantou」という名前付きの箱を用意しています。箱の名前を適当に「a」や「b」としてしまうと何が入っているかが分からないので、意味の分かる名前を付けることが大事です。


配列とは?


「配列」とは、「同じ種類のデータをたくさんまとめて入れておける、番号付きの引き出しがついた整理棚」のようなものです。 たくさんの情報を効率よく扱いたいときに活躍します。棚全体に名前(配列名)を付け、各引き出しには番号(添字やインデックスと呼ばれます)が振られていて、その番号を指定することで特定の引き出しの中身にアクセスできます。今回の問題では、「Akibi」という名前の配列を用意していて、引き出しの番号は部員の番号と対応を取っています。つまり、部員の番号と同じ番号の引き出しを見れば、その部員の空き日が分かるということです。




解説


空欄【カ】


では問題の解説に移りましょう。まずは空欄【カ】 についてですが、問われているのはakibi[3]の中身ですね。先程、配列の説明で示したように「akibi」が示すデータは部員の空き日であり、[]内の番号が示すものは部員の番号になります。つまり、部員3の空き日が答えなので、図1を見ると4日目に空き日となっています。そのため、解答は以下の通りとなります。

【カ】の答えは、「4」

空欄【キ】


次に、空欄【キ】 についてですが、まずは図4の次の担当者を決めるプログラムの内容を見てみましょう。該当の空欄は「tantou」に「buin」を代入する際の条件を問われています。「tantou」は次の工芸品の担当者の部員番号です。担当者を決める条件は「最も早く空きになる部員(複数いる場合はそのうち最小の番号の部員)が、空きになった日付から次の工芸品を担当する。」でしたね。なので部員番号の小さい順に最も早く空き日がくる部員を探していることが分かると思います。(03)行目でtantouに部員1を設定し、順番にそれぞれの空き日と比較し、担当にしようとした部員(akibi[tantou])よりも次の部員の空き日(akibi[buin])が早く到来するならば担当を更新する流れです。そのため、解答は以下の通りとなります。

【キ】の答えは、「① Akibi[buin] < Akibi[tantou]」

空欄【ク】


最後に、空欄【ク】についてですが、部員数を5人にした場合に、次の工芸品の担当者が部員3となる処理で、担当を更新する処理が何回行われるかが問われています。少し複雑に感じるかと思いますが、部員数が5人になった場合の空き日は、部員1から順番に[5、6、4,4,4]と分かっています。空き日が一番早く、部員番号が最も小さいのが次の担当者なので、担当者は部員1から見ていき、部員2よりも空き日が早いので1回目に担当者は更新されません。2回目のループは部員1と部員3を比較し、部員3の方が空き日が早いので担当を更新します。部員4と部員5は空き日が同じなので更新されず、担当が部員3と決まります。そして、担当の更新回数は1回になります。そのため、解答は以下の通りとなります。

【ク】の答えは、「1」

学びのポイント


この問題で登場する「部員の空き日リスト(配列 Akibi)」のように、関連性の高い情報を集め、構造を持たせて管理する手法は、情報を効率的に扱うための基本です。これは、皆さんが普段目にする名簿や商品リストが整理されているのと同じ理由で、必要な情報を素早く見つけ出し、正確に保つために役立ちます。これはプログラムにおいても同様で、「特定の部員の空き日はいつか」といった個別の情報に、名前とインデックス番号を指定するだけで直接かつ簡単にアクセスできるようになります。もし仮に配列がなければ、例えば部員3人の空き日を「部員1空き日」「部員2空き日」「部員3空き日」のように、それぞれ異なる名前の変数で管理する必要が出てきます。これでは、部員の数が増えるほど管理が煩雑になり、プログラムも扱いにくくなってしまいます。同じ種類(型)のデータ(ここでは日付という数値)であれば、たとえその数が多くなっても、一つの名前とインデックスですっきりと、効率的に管理することができるのです。これが、プログラムで大量の同種のデータを扱う際に配列が重要である理由です。


さらに、この問題でプログラムの処理を筋道立てて一つ一つ追っていく作業は、まさに論理的思考です。与えられたルールや条件から、どのような手順で結果に至るのかを読み解く力は、プログラミングの世界に留まりません。日常生活や仕事においても、複雑な状況を整理し、問題解決への道筋を論理的に見つけ出す上で不可欠なスキルと言えるでしょう。変数を使ってデータを一時的に記憶し、配列を使うことでデータを一つのまとまりで管理でき、分岐処理を用いて条件ごとの動作を定義する――こうしたコンピュータの基本的な動作原理を理解することは、現代社会を支えるテクノロジーの「考え方」に触れることであり、物事の仕組みを深く理解し応用する力を育むでしょう。



まとめ


少し長くなってしまったので、問3についてはまた近日記事を投稿させていただきます。今回も記事を読んでいただきありがとうございます。「情報処理って理系の分野でしょ」と思っていた方も、そうではなく普遍的な誰もが必要なスキルだということが少し理解いただければ幸いです。タイムレスエデュケーションでは、プログラミングという手段を通じて、「考える」「創る」「伝える」力を育み、子どもの内面にある可能性を丁寧に引き出す伴走者としてサポートします。そして、「自分の考えを形にし、人に伝える力」が育てば、“自分の意思”で未来を選べる力につながっていきます。プログラミングの知識だけでなく、どこへでも羽ばたいていけるスキルを一緒に育てていきましょう。もしプログラミング教育にご興味がありましたら、いつでもお問い合わせくださいませ。


コースについて

お問い合わせはこちら!

INFORMATION無料体験会・ワークショップ・ご案内

     

夏の無料体験会

無料体験会を実施します。ぜひ一度ご体験ください!
     
     

タイムレスキッズスクール2025夏

     
夏のワークショップを開催します。ぜひご参加ください。

プログラミング&ロボット教室 授業運営パッケージ

弊社で実施している授業を取り入れたい方々向けに提供しています。