基本情報技術者 勉強記録 3週間目~アルゴリズムを得意にする為に~

基本情報技術者

基本情報技術者勉強記録
基本情報技術者 勉強記録 1週間目~まずは基本書読みから~
基本情報技術者 勉強記録 2週間目~過去問勉強での衝撃~
の続きです。この記事の後には
基本情報技術者 勉強記録 4週間目~アルゴリズム以外の午後対策~
基本情報技術者 勉強記録 5週間目~最後の週は復習するのみ~
があり、総合的な合格体験記として
この勉強法で合格!基本情報技術者合格体験記
があります。

ここからの勉強は、勉強開始して3週間目であり、総勉強期間が約5週間の自分にとっては、ちょうどこの週の真ん中あたりが折り返し地点であり、余裕をもって早めに仕上がった状態で折り返せるか、それとも間に合わないような仕上がりの悪い状態で折り返せるか、どのようなコンディションで折り返せるかの勝負の1週間でした。

3週目はアルゴリズム対策がテーマ

2週間目で、午後の問題に対する仕上がりペースがかなり遅れていると感じたので、3週目は午後の問題、特に第八問で必須のアルゴリズムを集中的に勉強することをテーマにしました。また、併せて午前の問題に関する知識を忘れずに保持すること、基本書の例題を全てできるようになること(1週目で1通り読んだときに例題はほとんど飛ばしていた為)も意識しました。

新しい参考書を購入

かくして、3週目が始まったわけですが、自分が基本書としている

では、午後のプログラム言語の十分な対策はできなそうでしたので、新たな書籍を買うことにしました。
買ったのはこちらです。


Amazonで“アルゴリズム 基本情報技術者”と入力すればこの本やこの本のシリーズが1番トップに来たので一番売れているのだと思います。評価もかなり高いものでした。

時間がないから読み込む範囲を絞った

この本はAmazonで買いました。とにかくあと三週間しかないものですから、急いで根を詰めて1/3程読み込みました。自動販売機に内蔵されているプログラムの例や、りんごを用いたかなりかみ砕かれた事例が記載してあり、わかりやすくしようとしているなという印象は十分に感じることができたのですが、時間が無い私にとっては「得点力をつけることができるような実践的な解説を早くしてくれ」とう思いで読んでいました。
試験前数か月ぐらいで余裕をもってじっくり取り組むような環境があれば、もっと使いやすかったのかもしれませんが、試験前3週間の私にとってはあまりに遠回しに説明されているように感じて、途中で精読するのを一端止めてしまいました。

そこで、自分がここが大事だと思えるところだけつまみ食い式に読むことにしました。
具体的には
・流れ図の基礎
・流れ図と疑似言語
・挿入法
・データ探索法と番兵
・ハッシュ表探索
・文字列処理
・2次元配列
・ビットマップ
・画像の拡大縮小処理
・シェルソート
・クイックソート
・ヒープソート
・マージソート
のところをやると決めました。
やると決めた範囲の疑似言語をコピーしてルーズリーフに貼って、十数枚の疑似言語が貼られたルーズリーフを作りました。そっちを勉強対象にすることで見た目のボリュームを減らしました。コピー代で400円くらいかかったと思いますが、全然気になりません。

いつも資格試験の勉強をするときはそうなのですが、一つの資格試験の勉強で2,000円くらいコピーをすることがあります。多少めんどくさくてお金がかかっていますが、それをすることで勉強がはかどるのならば安いものだと思っています。

実物はこんな感じです。

dav

疑似言語対策は、まずプログラムが読めなければならない

こうして、ルーズリーフに貼られた十数パターン疑似言語に取り組むことにしました。もちろん、いきなり初見の疑似言語が普通に読めることも無く、何度も元の参考書を参照しました。そして、元の参考書でもどうしてもわからないところはネットで調べて読み進めました。そうして最後のルーズリーフまで読みましたが、どうしても理解できなかった1割くらいはとばして最後まで読みました。

ネットでアルゴリズムについて調べていたら、どこかのページで「アルゴリズムの疑似言語は英語の長文読解のようなもので、最初はわからないことだらけだが、量をこなしていくとじわじわとわかる部分が増えてくる」と書いていました。疑似言語を集中的に勉強していると確かにそんな感触でした。量をこなせばこなすほど素早く構造を理解できるようになり、わかる内容も増えていきました。

問題を解こうにも、解く為にトレースをしようにも、まずは提示されたその疑似言語が何を意味しているのか理解できなければ手の動かしようがないので、疑似言語について集中的に取り組んだことはよかったと思います。

トレースの練習不足を意識し始める

この勉強に4日ほどかかりましたが、4日経過した時点での課題はトレースの練習ができていないということです。実は、早く読むことばかりに意識がいって、ついついトレースの手間を省いてしまいました。アルゴリズムではトレースが大事だといわれているのに・・・。

しかし、アルゴリズムの問題の解説にはトレース結果を掲載しているものと解説していないものがあるんですね。勉強初学者は、自分が作成したトレース表が正しいのか、間違っているのかわからないので全ての例題や問題にトレース表を掲載してもらえれば大変勉強しやすいのにと、この頃は毎日のように思っていました。皆さんが勉強する為に参考書や問題集を買うときは、トレース表の記載の多いものを意識して買うと良いのではないかと思います。

ネットで見つけたアルゴリズムに関する勉強アドバイス

3週目の勉強の合間に、ネットで基本情報技術者のアルゴリズムの攻略方法についていろいろ調べてみたところ、いろんな人がいろんなアドバイスをしていました。まとめるとこんな感じです。カッコ内はそれを読んだ時の自分の感想です。

アルゴリズム全般

①アルゴリズムはいろんな処理の概念を理解せよ。線形探索法、ハッシュ探索法、シェルソート、ヒープソート等の概念を知っていると、提示された疑似言語を理解しやすい。
疑似言語は、基本ルールが頭に入った後、数多くのパターンを読み込むと良い。また、量をこなすと瞬時に類似パターンを想起でき、読解が早くなる。

トレース

トレースができるか否かがアルゴリズムの要
②頭の中で提示されたプログラムを動かしてみよ。(つまり、頭の中でトレースせよという意。頭の中で動かしにくいトレース内容のものもあると思うので、紙面があればあれば紙面のほうがいいと思うのだが・・・言わんとすることはわかる。)
③はじめはトレースできなくても、勉強を続けていればできるようになる。(それはそうと思うが、この手の精神論的なアドバイスはちょっと苦手。勉強の仕方によっては勉強を続けていても全然できない人もいると思うので、具体的なアドバイスが欲しい)
トレースするにも準備が必要。いきなりトレースしようとしてもほとんどの人はできない。それが、アルゴリズムとトレースについて多くの人が苦手意識を持っている理由である。例えば、変数や配列変数等を書き出しておく。この様な事前準備を「状況設定」という。いくつ書き出せばいいかわからなければとりあえず10個書き出してみる。書き出すというのは、理解を助けるための表や図の構成要素として紙面に書くという意味ですね)状況設定ができればどんなプログラムでもトレースできる。どれを書き出せば良いかは主にプログラムの宣言部分から読み取るが、これが状況設定の要素ですよと書いてあるわけではない。「状況設定」にはルールがない。問題の内容により千差万別なので、自分で想像する必要がある。
⑤トレースした後には、そのプログラムがどんな仕組みで動いているか検討する。これが総括である。
⑥慣れないうちはトレースに結構な時間がかかる。トレースの途中で間違いに気付いて最初からやり直しという事も度々ある。慣れてくると驚くほどスピードが速くなる。最終的には変数などを書かなくてもトレースできるようになる。
ほとんどの試験で具体的な引数は与えられない。具体的な引数は自分で考える必要がある。m個って何?n個って何?ではなくて、わからないならば自分で仮定の数字を入れてみて考える。
トレース表に決まった形はない。表でもいいし、図でもいい。その人がプログラムを理解するためにプログラムの連続した動きを書き出したものがトレース表だと考えると良い。

こんなアドバイスをネットで入手しました。④~⑧は同じサイトで見つけたものですが、目の前の雲が晴れたように晴れ晴れした気持ちがしました。どんな問題でもトレースは1つと考えていたのですが、トレース表に決まった形はないといわれてすごく気持ちが自由になりました。よし、いろんな問題にあたってみようという気持ちになりました。

3週間目の残り3日間で午前の例題を解いた

3週目の残り3日間は


こちらの本で飛ばしていた例題をやりこみました。最初に読んだ時より1週間以上間が空いていたので、忘却防止の為のいい復習になりました。3日間で8割くらいはできるようになったと思います。知識があいまいになっていた分野はもう一度読みました。

平日も勉強しまくった3週間目

かくして、この基本情報技術者試験の分水嶺のような3週間目が終わりました。結構気持ちが焦ってきて、この頃には朝5:30に起きて、30分で身支度と食事をし、6:00から7:30まで勉強、7:30に出勤、8:10に会社に着いて9:00の始業まで勉強、昼休みに30分勉強、終業後18:00から19:00までマクドナルドで勉強、20:00帰宅後21:30から22:30まで勉強というサイクルが出来上がっていました。仕事をしながら1日で5時間近く勉強していたことになります。自分でもよくやったなと驚きです。

3週間目の勉強時間は35時間程度、1~2週間目と併せて65時間程度経過していました。

この記事の続きとして
基本情報技術者 勉強記録 4週間目~アルゴリズム以外の午後対策~
基本情報技術者 勉強記録 5週間目~最後の週は復習するのみ~
があり、この記事の前には
基本情報技術者 勉強記録 1週間目~まずは基本書読みから~
基本情報技術者 勉強記録 2週間目~過去問勉強での衝撃~
があります。また総合的な合格体験記として
この勉強法で合格!基本情報技術者合格体験記
があります。

Visited 146 times, 1 visit(s) today

コメント

  1. やまだ より:

    こんにちは。今年基本情報技術者試験を受ける予定で、アルゴリズムの対策にてこずっているのですが、勉強法等大変参考になりました。ありがとうございます。

    恐れ入りますがお伺いしたいことがございます。基本情報技術者試験の勉強法の記事で、3週目以外のほかの週の記事も読ませていただきたいのですが、そちらのページを読み込むと強制的にこちらの3週目のアルゴリズムの記事に遷移してしまい、ほかの記事が読めません・・・。

    もしかしたらこちらのPC環境によるものかもしれないのですが、お時間のあるときにでもご確認いただけたらありがたいです。ちなみに環境はWindows10でブラウザはchromeとIEです。申し訳ございませんがよろしくお願いいたします。

    • アバター画像 synpa より:

      やまださん
      ご質問、ご指摘ありがとうございます。

      誤ってリダイレクトという自動画面遷移が組み込まれていましたので、解除しました。
      他のページも参照ください。

      勉強大変だとは思いますが、頑張ってください。

      • やまだ より:

        こんにちは。お忙しい中、ご対応いただき誠にありがとうございます。

        他の記事も見れました! ありがとうございます、がんばります。

タイトルとURLをコピーしました