筑波大編入に使った参考書【情報編】

自分が受験した筑波大学情報学群ではC言語で記述されたデータ構造とアルゴリズムの問題が出されます.注意として,最近は有名アルゴリズムを覚えるだけでは不十分だなと自分は感じているので出来ればAtCoderのpracticeなどで練習して実践力をつけることもお勧めします.

あと,自分は機械工学科に在籍していたので,編入勉強の初期段階でC言語がほとんど書けませんでしたし,ソートとか計算量とかなにそれって感じだったので,入門書からのスタートでした.なので情報系の学科に在籍している人は序盤出てくる入門書はいらないかもしれませんので適宜,図書館などで中身を確認して自分にあったレベルから始めてください.

1.やさしいC

難易度:★☆☆☆☆
推薦度:★★★☆☆

C言語を全く書けないというレベルの人が読むべき本.イラストが豊富でおしゃれで,日本語が少なく後から読み返しやすい.入門書として次に紹介する明解のC入門もあるのだが,あっちの方が詳しく日本語も多い.のである程度,制御構文くらいまで覚えている人は,そちらから始めていいと思う.ただ,先に書いた通り読み返しやすいのは,やさしいCの方なので文法をど忘れした時などに使うにはこちらである.

2.新・明解C言語 入門編(明解シリーズ)

難易度:★☆☆☆☆
推薦度:★★☆☆☆

先に書いた通り,やさしいCに比べより詳細に説明してあり,例プログラムも書いてあるので文法をよりしっかり理解したいならオススメだ.もちろん入門書は紹介した2つのうちのどちらか1つをやれば十分なのだが,個人的には,やさしいCの方がオススメであるので推薦度に差をつけた.理由は,文法を習うのは割と地味でだるい作業なので,ある程度でいいのでサッと終えてしまって,データ構造やアルゴリズムの勉強をしていく上でつまづいては自分で調べながら.という学習の方が能動的で最終的な効率もいいと思うからだ.

3.新・明解C言語で学ぶアルゴリズムとデータ構造(明解シリーズ)

難易度:★★☆☆☆
推薦度:★☆☆☆☆

この本は良くない(いきなり).何が良くないってこんなにボリューミーなのに,受験範囲の半分くらいしかカバーしてないからだ.ソートや線形リストがあり,最後に探索木をちょろっとやって終わりという.読みやすいコードだったけど,あまりオススメできないものだと感じた.明解シリーズは有名でありこの本で勉強し始める人も少なくなさそうなので,非推奨だよという忠告の意味を込めてこの推薦度を下して,ここで晒すことにした.

4.定本 Cプログラマのためのアルゴリズムとデータ構造

難易度:★★★★☆
推薦度:★★★★★

受験生のバイブルと化しているこの本である.ひたすら日本語で超わかりやすくアルゴリズムとデータ構造を説明している.各テーマごとにプログラムは載っているが,関数だけか,一部省略してあるので模写コンパイル学習には向いていない.この本は読み物として使うと超優秀.ただ,文法だけしか知らない状態で挑むとかなり難しく感じたので,同じアルゴリズム・データ構造の完全なソースコードが載っている参考書(模写コンパイル学習できるもの)との併用が望ましい.次の本とかでね.この本ではグラフ系や迷路などの範囲は書かれていないので別の本で履修が必要だ.

5.C言語によるはじめてのアルゴリズム入門

難易度:★★★★☆
推薦度:★★★★★

ひたすらたくさんのアルゴリズムの完全ソースコードが載っている.模写コンパイル学習にはもってこいの本だ.定本を読み終えた後(併用も推奨)はこの本を回しまくるのが1番いいと思う.定本には無いグラフ系や迷路問題を扱っているのもお勧めできる点である.ただ,度数分布ソート(数え上げソート・プレフィックスサムソート)は無かった.このソートはマイナーだが過去問に出てくるソートであり最後の出力の仕方が複雑なのでどこかで履修する必要がある(一応,定本にはある).

6.プログラミングコンテスト攻略のためのアルゴリズムとデータ構造(螺旋本)

難易度:★★★★☆
推薦度:★★★★☆

AOJのAlgorithms and Data Structures Iコースの問題を題材に解答例をつけて解説している本.一通り,知識を付けた後の演習書としてこの本や下の本,ひいてはAOJなどのオンラインジャッジサイトの練習問題はとても役に立つと感じた.解答例はCだったりC++だったりとバラバラ.

7.プログラミングコンテストチャレンジブック(蟻本)

難易度:★★★★★
推薦度:★★★★☆

こっちの本はPOJの過去問で題材にしていて,各章末でGCJの過去問に挑戦する構成になっている.上の本と違い,ソースコードは完全にC++なのでCに変換してコンパイルする作業は地味に体力を使った.さすがに全部する気にはならなかったので,螺旋本でカバーできていない所だけやった.上と合わせてこの2冊はかなり実践力をつけさせてくれたと感じる.頭の中ではアルゴリズムを理解したつもりでも,いざ白紙から書けとなると,「えっと,どうだっけ...」となるものなのでこれらの本,ひいてはオンラインジャッジサイトは実践力を付けるとってもいい教材になると思う.

最後に

去年と今年は有名アルゴリズムが出ていません.去年の大門2の迷路を除けば,全てオリジナルな関数を題材にしています(コサイン類似度,指数関数,順列).これを易化・難化どちらと捉えるかは難しいです.

また,これらは直近2年での現象であり,傾向と呼ぶには稚拙なものかもしれません.

なので,これから編入試験を受ける後輩たちには有名アルゴリズムも抜かりなく習得していただいて,ユニークな問題にも対応できる力を身につけて欲しいなと思います.そのためにはAtCoderやAOJなどのオンラインジャッジサイトの問題をといてみると良いと思います.

なにか聞きたいことがあればTwitter(@AnoTensai)にDMしてくれればなんでも答えます.

この記事が気に入ったらサポートをしてみませんか?