アルゴリズムって難しい…
基本情報の午後試験を解いていると、立ちはだかってくるのが「データ構造とアルゴリズム」だと思います。実際私も思ったように点が取れなかった部分なので、今回は基本情報の午後試験の中でも「データ構造とアルゴリズム」に特化した記事を書いていきます。
私と同じようにアルゴリズムに苦しんでいる方の一助となれたら嬉しいです。
想定している読者層
基本情報の午後試験の勉強中の人の中でも、学校などである程度プログラミングを勉強していて、if文やfor文などを理解できている方向けの記事になります。if文やfor文がまだわからない方は、googleで調べてみたり、paizaやProgateなどで実際に手を動かしながら覚えてみたりしてから読むと良いかもしれません。
筆者の成績と情報
私は令和4年度春期に合格しました。そのときの成績はこんな感じでした。
ちなみに午前試験は69点でした。過去問は安定して8割解けていたのですが……。
同じ試験を受けた会社の同期も難しいと言っていたので、難化していたのかもしれません。
成績が悪かった言い訳じゃないよ!
大学在学中に何度か記念受験をしていたので、初めての受験ってわけではなかったです。
試した解き方
アルゴリズムの攻略で一番大切なのは、処理の流れを追うことです。今どんな処理を行い、その結果変数たちはどうなったのか……それを地道に追っていくのが正確に問題を解くコツです。
では実際処理の流れを追うにはどうしたら良いか。
実際の試験ではA4の紙1枚が配られます。
そこに表を書くのです。
例えば、問題の中にfor文が出てきたとして、その中でたくさんの処理が行われているとします。
その処理を全て頭の中でやろうとすると、どこかで必ずミスが発生します。
そこで落ち着いて、i=0のときは配列hoge[i]は0で……といった変数の状態を全て表に記録します。
i | hoge[i] | huga[i] |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
2 | 10 | 2 |
3 | 11 | 3 |
そうすることで処理の全体像が見えるとともに、「α行の処理を行った後のhoge[0]はどうなっているか」「この処理を終えた際のhuga[0]はどうなっているか」などの問題に落ち着いて答えられるようになります。
この手法が特に活躍する過去問としては、R1年度秋期の設問2、3が挙げられます。
こんな解き方じゃ絶対制限時間に間に合わない!って思う方もいらっしゃるかもしれません。
しかし、「急がば回れ」ではありませんが、脳みそのみで処理を追うより紙に書いた方がスピーディーかつ正確に問題を解くことができ、さらに紙に途中経過が書いてある分、見直しもしやすくなります。
紙のスペースが心配……という方も安心してください。試験官を手元のブザーで呼べば何度でも紙を補充してもらえます。
まとめ
「データ構造とアルゴリズム」がどうしても解けないという時に、会社の先輩から教わった方法がこの処理の流れを表に記録するというものでした。現在のCBT方式での正確な配点はわかりませんが、「データ構造とアルゴリズム」だけで25点程度あるはずなので、確実に点を取っていきたいところですね。
以上、22卒新人エンジニアなっしーでした。
今後も記事を書いていきますので、よろしくお願いします!