科目Bのアルゴリズムは、自分で書くのではなく、書かれたものを読んで答える問題です。だから必要なのは「思いつく力」ではありません。目の前のプログラムが何をしているかを、確実に言い当てる力です。このページで出題範囲を正典で確かめ、27回をどの順に読むかまで決めておきます。手当たり次第に始めると、前の回を使う回に先に当たって、そこで止まります。
書く力ではなく、読む力が問われる
アルゴリズムと聞くと「自分でソートを思いつけないと駄目なのか」と身構えますが、科目Bで問われるのはそこではありません。出題はいつもプログラムが先にあって、空欄が数か所ある形か、実行結果を答える形です。
やることは、いつも同じ3つ
① 問題文が「何をする関数か」を必ず教えてくれるので、まずそこを読む。② 変数の値を1行ずつ書き出す(トレース)。③ 空欄に選択肢を入れて、①と食い違わないものを選ぶ。
アルゴリズムの名前を知っていると②が速くなる ── これが「アルゴリズムを勉強する」ことの実際の効き方です。知らなくても解けますが、時間が足りなくなります。
アルゴリズムの前に、プログラムそのものが読めなければ何も始まりません。配列の要素番号が1から始まること、← が代入であること、while がいつ終わるか ── ここが曖昧なままアルゴリズムに進むと、「アルゴリズムが難しい」ではなく「文法が読めていない」だけの状態になります。
まだ不安があれば、先に 擬似言語の読み方 を通してください。
科目Bに出るアルゴリズムの地図
出題範囲は試験要綱に、その中身はシラバスに書かれています。まず要綱の原文です。
出典:試験要綱 Ver5.6 科目B 出題範囲
3 データ構造及びアルゴリズム
配列,リスト,スタック,キュー,木構造,グラフ,
整列,文字列処理,再帰
これを、シラバスの分類にそろえて整理すると、「入れ物」と「手順」の2つに分かれます。
| 何か | 出題での見え方 | |
|---|---|---|
| 配列 | 番号で場所を指す入れ物 | いちばんよく出る。入替え・逆順・シフト・集計・最大最小 |
| リスト | 「次はどれか」を持たせてつなぐ入れ物 | 要素の挿入・削除でつなぎ替えが起きる |
| スタック・キュー | 出し入れの順番が決まっている入れ物 | 後入れ先出し(スタック)と先入れ先出し(キュー)の対比 |
| 木構造 | 枝分かれしてつながる入れ物 | たどる順番(先行順・後行順・中間順) |
| グラフ | 点と点が自由につながる入れ物 | 経路をたどる・最短経路 |
| 整列 | 並べ替える手順 | 途中の状態を答えさせる(何周目で配列がどうなるか) |
| 探索 | 目当てのものを見つける手順 | 比較回数、見つからなかったときの動き |
| 再帰 | 自分自身を呼び出す手順 | どこまで潜って、どう戻ってくるか |
| 文字列処理 | 文字を1つずつ見ていく手順 | 照合・置換・数え上げ |
要綱にはもう1項目、「数理・データサイエンス・AI などの分野を題材としたプログラム」があります。何を指すのか要綱だけでは分かりませんが、シラバスの「自然言語処理のアルゴリズム」(形態素解析・n-gram・文章間類似度など)がその中身にあたります。
身構える必要はありません。題材がAIなだけで、やっていることは配列の集計です。第2部の最後に扱います。
第2部 定番処理の型(全26回)
むずかしい順ではなく、あとの回が前の回を使う順に並べています。上から順に読んでください。1回に1つずつ、擬似言語での書かれ方と、1行ずつ動かせるトレースが付きます。
先に実物を1問見てみる
ハッシュ表探索(A7-2)にあたる出題は、すでに解説してあります。値から置き場所を計算して格納するという、探索アルゴリズムの入口です。
次に読む
この記事で引用した資料
いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。

