基本情報技術者試験 アルゴリズムを解くための”勉強”について

アルゴリズム
スポンサーリンク

 

アルゴリズムの問題が難しくてどう手を付けたら良いか・・・

プログラムを追うって言っても難しい・・・

アルゴリズムを勉強しているけど点数が一向に伸びない・・・

アルゴリズムの勉強を始めた人は、
大抵こんな悩みを抱えているのではないでしょうか?

その気持ち私にもよく分かります!

私もアルゴリズムを始めたばかりの時は、
こんな難しい問題解けるか!
と勉強を投げ出した一人です。

ただそんな私でもアルゴリズムの問題に正解して、
基本情報技術者試験に合格できたのですから、貴方にも十分にチャンスがあります。

 

そこで今回は、アルゴリズムの勉強に苦戦している人に伝えたい、
アルゴリズムの勉強法やアルゴリズムの問題を解くために必要な準備について解説します。

 

アルゴリズムという分野は、
基本情報技術者試験に出題される問題の中でも難問とされる分野です。

だからこそ入念な準備と多くの勉強時間が必要となる分野と言えるでしょう。

 

ちなみにアルゴリズムの配点は、25点

アルゴリズムの点数は、2020年の試験より配点が変更されました。

アルゴリズムの配点は他の問題と比較しても、配点は明らかに高く、
試験の合否を握っていると言っても過言ではありません。

そのためアルゴリズムの問題に正解できれば、
間違いなく試験合格に近づくと思って、気合を入れて勉強してください。

 

シロ
シロ

基本情報技術者試験の鬼門なんて呼ばれるアルゴリズムだけど、
何であんなに難しく感じるんだろうね?

チョコ
チョコ

理由としては、予習が通用しにくい所にあると思う。

シロ
シロ

どういうこと?

チョコ
チョコ

アルゴリズムの問題は、
過去に出題された問題からの引用はほとんど無い。
加えて疑似言語の読み方を覚えている、処理を覚えているだけ、
といった丸暗記では試験に通用しないからな

シロ
シロ

なるほど。
だからアルゴリズムは難しいのかも知れないね

スポンサーリンク

 

・最低限アルゴリズムの基礎的内容は把握しておく

アルゴリズムでは、最低限覚えておくべき要素があります。

その要素とは以下の通りです。

・疑似言語の読み方
・変数の種類
・変数の代入
・条件式によるデータの流れ
・繰り返し文の処理
・配列の扱い方
・基本的なプログラムの流れ

今挙げた要素は、アルゴリズムの問題を解くためには必要不可欠な要素です。

 

またアルゴリズムに自信がなくて、アルゴリズムの問題を捨てようと思っている人でも、
上記の要素を覚えておくだけで、アルゴリズムの基礎的な問題に答えられる可能性があります。

だからこそどんなに時間が無いとしても、
今回上げた内容は覚えておくことをおススメします。

 

チョコ
チョコ

疑似言語の読み方とか変数の種類とかは分かるが、
基本的なプログラムの流れってなんだ?

シロ
シロ

プログラムがスタートすると上から下へ処理が流れる。
副プログラムが終わったら、処理がどこに移動するとかが、
プログラムの流れと言える要素だね

チョコ
チョコ

なるほど。

シロ
シロ

あとはbreak文やreturn文といった要素も
プログラムの流れに入るかな。

 

・勉強時に重要なのは、プログラムを動かしているという感覚

アルゴリズムの問題を試験本番で解くために重要なのは、
プログラムをどれだけ読んできたか
プログラムをどれだけ追ってきたかという経験です。

だからこそアルゴリズムの問題は、問題を解くのではなく、
プログラムを追うという感覚を重視して勉強するようにしましょう。

 

ちなみに何故プログラムを追うという感覚を重視した方が良いかというと、
アルゴリズムの問題として出題されるプログラムは、毎回内容がガラリと変わるからです。

そのためしっかりプログラムを追わずに、
丸暗記によって「こんな感じだろ」という感覚で問題を解いていると、
本番の試験になってプログラムが追えないという状況が発生します。

そんな状況を防ぐために、アルゴリズムの問題を解く際には、
プログラムの処理をキッチリ追って、問題で使われているデータを当てはめて、
自分の頭で考えるという経験が重要になるでしょう。

 

またアルゴリズムの勉強をある程度進めて、
問題を解き慣れた時に気をつけたい状況があります。

それは「プログラムの処理を追わないで答えを書いてしまう」といったパターンです。

ろくにプログラムを精査しないで問題を解くといった状態は、
アルゴリズムの勉強においてはダメ。

アルゴリズムの内容が全く身に付かないため絶対にやってはいけません。

 

シロ
シロ

アルゴリズムの問題って、
適当にカンで答えると間違えるように上手く作られているよねw

チョコ
チョコ

大抵の問題は、
単純に考えると間違えるように、捻りが加えられているからな。
安易に答えようとすると、痛い目を見るパターンがほとんどだ

シロ
シロ

だからこそ、
しっかりプログラムを追って、データを当てはめて考えてみてね。

チョコ
チョコ

結局のところアルゴリズムは、
基本に忠実に解くというポイントを重視するのが、
正解への一番の近道と言えるからな

スポンサーリンク

 

・アルゴリズムは、プログラムを読んだ量も重要

アルゴリズムの問題を解く際には、
プログラムを読んできた量も重要です。

何故プログラムを読んできた量が重要になるかというと
アルゴリズムの問題はプログラムを読んできた量で、
問題を解く速さが格段に変わってくるからです。

だからこそアルゴリズムの勉強を進める際には、
基本情報技術者試験に出題された過去問題を使い、
プログラムをひたすら読んで、プログラムに慣れてください。

 

ちなみにどのくらいの過去問題をやれば良いかというと、

・時間が無い場合は、5年分×3周
・スケジュールに余裕がある場合は、10年分×3周。

程度が目安となるでしょう。

また1週目と2週目は、プログラムをしっかり読むといった確実性を。

3周目は、速度を重視した練習を心がけてください。

 

チョコ
チョコ

速度を重視するって言うが、
どのくらいの時間で問題を解くのが目安になるんだ?

シロ
シロ

そうだね。
大体1問辺り30~45分ぐらいが目安になるかな。
もちろん小さな設問とかをすべて含めた場合ね

チョコ
チョコ

かなり早い気がするな・・・

シロ
シロ

30分っていうのは、初めは難しいかも知れないね。
でもどんなに時間が掛かっても、45分程度で問題を解かないと、
他の問題を解く時間が無くなるからね。
だからこそ普段の勉強で素早く解く練習が重要なんだよ

スポンサーリンク

 

・プログラムを細部まで読み、テストケースを考える

アルゴリズムの実力が付いているか
いまいち実感できない

そんなことを考えているあなたには、
テストケースを考えて当てはめてみるという方法をおススメします。

なぜ上記のような方法をおススメするかというと、
アルゴリズムにおける問題の解き方は、突き詰めれば以下の3つに絞れるからです。

・問題文に書かれている処理をプログラムに当てはめる
・問題文に書かれているデータをプログラムに当てはめる
・プログラムに書いてある処理を読み取る

そして上記の条件を満たすのが、テストケースを考えて当てはめてみるという勉強法です。

 

またテストケースを考えて当てはめようとすると、

・プログラムの処理
・正常に終了するデータ
・異常終了するデータ
・問題文に書かれているプログラムの概要

といったポイントを理解しておく必要があります。

そして自分でテストケースを想定して勉強すると、
プログラムを正確に読めているか、データがトレースできているか、
というポイントが分かるため、今の自分の実力がはっきりした形で分かるでしょう。

 

ちなみにテストケースを考えて当てはめてみるという方法のメリットは、
アルゴリズムの実力が付くだけではありません。

答えを覚えてしまっている過去問題を再利用できるという利点もあります。

 

シロ
シロ

テストケースを当てはめてみるという方法をまとめると、
以下のような手順になるね

・プログラムの処理を把握する
      ↓
・テストケースを当てはめてみる
      ↓
・テストケースを変えてみる
チョコ
チョコ

テストケースを当てはめてみるという方法は、
初めの内は時間が掛かる方法だが、確実性は高い。
だからこそアルゴリズムを勉強する時は、
必ず身に付けておいてほしい方法だ

スポンサーリンク

 

・問題を間違えて、振り返った時こそ実力が付く

アルゴリズムという分野は、他の分野に比べて、
問題自体が難しく、プログラムを読む際には苦痛が伴うと言っても過言ではありません。

しかし、そんな人ほど覚えておいてほしいのが、
正解した問題より、間違えた問題の方が身になりやすい
という点です。

そして
間違えた問題を振り返り、正しく理解した時に実力は大きく向上する
というポイントも覚えておいてください。

 

間違えた問題を振り返るというポイントは、
他の分野でも重要なポイントではありますが、
アルゴリズムの場合、問題を間違えやすいため重要度が跳ね上がります。

むしろアルゴリズムを勉強する際に、
最も重要で意識しなくてはいけないポイントとも言えるため
必ず「問題を間違えて振り返った時こそ実力が付く」という点を覚えておいてください。

 

シロ
シロ

よく人が成長する時って、失敗した時なんて言うけど、
アルゴリズムでも同じようなことが言えるのかも知れないね。

チョコ
チョコ

アルゴリズムの勉強は間違えた問題を
理解するところから始まると言っても過言じゃない。

シロ
シロ

だからこそ間違えた問題を
キッチリ理解する必要があるね

 

・ロジックに関しては余裕があれば覚える程度で良い

アルゴリズムで使うロジックに関しては、
あくまでも時間に余裕があれば覚えるくらいで構いません。

なぜロジックを覚えるのが必須ではないかというと、
ソートや探索法、再帰といったロジックを覚えたところで、
ロジックが丸々出題されるといったパターンは少ないからです。

またロジックが出題されるとしても、
ロジックにアレンジが加えられている方が多い
どのようなロジックになっているか確かめる必要があるといった点から、
結局その場でプログラムを読む羽目になります。

そのためアルゴリズムのロジックを覚えるという勉強は、
プログラムを読む、過去問題を解くといった勉強法に比べれば、
優先順位は低いと言えるでしょう。

 

もちろんスケジュールに余裕があるならば、
ロジックを覚えて万全を期するべきですが、
ロジックを覚えるだけがアルゴリズムの勉強ではありません。

だからこそスケジュールを元に、
どのような勉強が自分に必要なのかといった計画を立てるのも、
基本情報技術者試験において重要な要素と覚えておきましょう。

 

シロ
シロ

今回の見出しだけ見ると、
ロジックを覚えなくても良い
という風に思う人がいるかも知れないね。

チョコ
チョコ

だがロジックを覚えてくと試験において有利になることも確かだ。
だから手を抜いて良いって訳じゃない点を頭に入れておいてくれ

シロ
シロ

プログラムを追わずに、プログラムの概要が分かる。
難しく時間が掛かりやすいアルゴリズムの問題を解く上では、
強力な武器になるのは間違いじゃないからね

スポンサーリンク

 

・初心者はフローチャートを書くところから勉強を始める

フローチャートは、アルゴリズムの基本と呼べる要素です。

アルゴリズムの初心者がプログラムに慣れるためにはピッタリな方法であり、
アルゴリズムを見たことの無い人でも分かりやすく、
処理が理解できるようになる素晴らしいツールです。

だからこそアルゴリズムの経験がない初心者の人は、
できる限り大目に勉強時間を確保して、
フローチャートを書くところから勉強を始めましょう。

 

ちなみにフローチャートを書いて、ある程度アルゴリズムに慣れたら、
早い段階でプログラムを読む練習を始めてください。

あくまでもフローチャートを書くという行為をメインにするのではなく、
プログラムを読むアルゴリズムの点数を上げる
といった目標を忘れないようにしてください。

 

シロ
シロ

よくある話だけど、練習のための練習をしないようにね

チョコ
チョコ

今回で言えば、フローチャートを書くという行為だな

シロ
シロ

そうだね。
あくまでも目標はアルゴリズムで良い点数を取るために。
あくまでもプログラムを読むのが目的であって、
フローチャートを書くのが目的じゃないからね

 

・メモ用紙やノートを置いて勉強を進める

アルゴリズムの勉強は時間が掛かる・・・

そんなことを考えているあなたには、
問題用紙の隣にメモ帳やノートを置いて勉強する方法をおすすめします。

人によっては「なにを当たり前のことをw」と笑ってしまう方法かもしれませんが、
アルゴリズムにおいては、このメモを取るという行為が物凄く重要です。

 

例えば、メモを取るという行動を習慣化すると、

・問題文やプログラムで理解した箇所をメモする
      ↓
 問題を解くスピードが上がる

・データの流れを逐一メモする
      ↓
 プログラムを正しく追えるようになる

といったメリットが発生するようになります。

また普段からパソコンを使って問題を解いている人は、
本番の試験が紙を使った試験である点を考慮して、
紙にメモをするという行為に慣れておく必要があるでしょう。

 

ちなみにメモを取る際に解いた問題のメモは、
どの問題を解いたか分かるように保管して
後で見直せるようにしておきましょう。

すると、もう一度その問題を解いた際に、
復習しやすくなるため、
勉強の効率化問題が理解しやすくなるといったポイントに繋がります。

 

シロ
シロ

個人的にはノートなどの紙によるメモだけでなく、
パソコンのメモ帳機能を使ったメモもおすすめだよ

チョコ
チョコ

パソコンのメモ帳は、
書いたり消したり、保存するという行為がとても楽だから、
後で見返すのが物凄く簡単だ

シロ
シロ

もちろんスマートフォンとかでも良いから、
是非とも電子端末でメモを取るという行為を試してみてね

スポンサーリンク

 

・難問、良問、易問で実力をつける

最後に基本情報技術者試験で出題された過去問題を
独自に難問と易問、良問といった形で分けてみました。

アルゴリズムの勉強を始めたばかりの時は、易問を。

アルゴリズムの勉強に慣れた後は、良問や難問を解いてみてください。

また問題によっては、問題を解くポイントを記載しています。

問題を解く際のヒントにして頂ければ幸いです。

 

難問
 平成29年春期
 平成26年秋期(編集距離のX(削除)とY(挿入)の関係に気付けるかがカギ)
 平成26年春期(iとp始点と終点の関係性に気付けるかがポイント)
易問
 平成28年秋期
 平成24年春期
 平成21年秋期
良問
 平成27年春期 時間が掛かる、易問でもある
 平成25年春期 当てはめるデータを変えてみると・・・

 

まとめ

今回はアルゴリズムの問題を解くための準備について解説しました。

・最低限アルゴリズムの基礎的内容は把握しておく
・勉強時に重要なのは、プログラムを動かしているという感覚
・アルゴリズムは、プログラムを読んだ量も重要
・プログラムを細部まで読み、テストケースを考える
・問題を間違えて、振り返った時こそ実力が付く
・ロジックに関しては、余裕があれば覚える程度で良い
・時間があればフローチャートを書くところから勉強を始める
・メモ用紙やノートを置いて勉強を進める

・難問、良問、易問で実力をつける

 

アルゴリズムは、とても難しい分野です。

それこそ基本情報技術者試験を受験している殆どの人が、
苦戦する分野と言えるでしょう。

だからこそ今回こういう形で、
アルゴリズムの問題を正解するにはどのような準備をしたらいいか、
というポイントを解説しました。

そのためアルゴリズムに苦戦している人は、
是非とも記載した内容を参考にして頂ければと思います。

 

ちなみに以下のページでは、
アルゴリズムの問題を解くための”コツ”を解説しています。

基本情報 アルゴリズムを解くための"コツ"についてPart.1
こちらでは基本情報技術者試験のアルゴリズムを解くためのコツや問題の種類について解説しています。問題の解き方からちょっとしたコツまで、是非とも試験対策に活用してください。

こちらも今回の記事と合わせて、勉強に活用してみてください。

 

また以下のページでは、
私がおススメするアルゴリズムの参考書をレビューしています。

レビュー『うかる! 基本情報技術者 [午後・アルゴリズム編]』
『うかる! 基本情報技術者 [午後・アルゴリズム編]』のレビューと評価になります。イラストやフローチャートによる解説が多く、初心者でも分かりやすいのが特長です。

試験の過去10年分の問題を、動画で解説している参考書であるため、
アルゴリズムの得点を伸ばしたいのであれば必見です。

コメント