基本情報 アルゴリズムを解くための”コツ”についてPart.2

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

 

前回から引き続き、ご覧いただきありがとうございます。

こちらでは「基本情報 アルゴリズムを解くための”コツ”について」のPart.2になります。

では問題を解くためのコツについて解説していきましょう。

 

・始めに問題の全体像をチェックする

問題の解き方も種類も分かったし、早速問題を解いてみよう!

ちょっと待ってください。

アルゴリズムの問題を解く前に、是非ともチェックしてほしいポイントがあります。

それは問題の全体像をチェックするという点です。

 

やり方は、非常に簡単。

アルゴリズムの問題全体をサッと見て、
問題が何問あるか、問題はどのくらい長いかチェックするだけ。

人によっては、

なんだその方法?

と思うかも知れませんが、問題の全体像を把握すると、

・問題をすべて解くまでの時間をザックリと把握できる
・問題をどのくらい解けばいいのか分かるので心の余裕を生む

といった効果があります。

またアルゴリズムだけでなく、
問題文が長い午後試験全般で使えるテクニックとも言えるため、
是非とも活用してみてください。

 

シロ
シロ

アルゴリズムの問題は難しくて時間が掛かるからね。
だからこそ問題の全体像をチェックするといった
概要を把握する作業が重要になるよ

チョコ
チョコ

こういうポイントが
意外に試験の点数を左右するから注意が必要だな

シロ
シロ

ちなみに以下のページでは、
試験時間を節約するような小技を紹介しているよ

試験中に使える小技4選。点数アップと試験時間の節約に使えます
試験時間の節約に点数アップに! 知っているのと知らないのとでは確実に差が付く、試験中に使える小技を紹介します。
チョコ
チョコ

是非とも活用してみてくれ!

スポンサーリンク

 

・問題文とプログラムを関連付ける

プログラムの全体像を把握したら、
次に問題文とプログラムを関連付ける作業に入りましょう。

なぜ問題文とプログラムを関連付けるのかというと、
基本情報技術者試験のアルゴリズムは、
問題文とプログラムが一対になって出題されるからです。

そのため問題文の説明が、
プログラムのどの部分に対応するのかというポイントが分かれば、
問題がスムーズに解けるようになるでしょう。

 

またアルゴリズムで出題される問題の中には、
問題文をそのままプログラムに当てはめるだけで、解けるような問題もあります。

例えば以下の問題。

平成29年秋期 午後試験 問8-1

平成29年秋期 午後試験 問8-2

平成29年秋期 午後試験 問8-3

平成29年秋期 午後試験 問8-4

出典:平成29年秋期 午後試験 問8より抜粋

上記の問題は、文字列の誤りをチェックする検査文字を生成するプログラムですが、
「プログラムの説明」としている文章の中に、
空白「b」の解答が丸ごと掲載してあります。

「b」の解答を埋めるのであれば、
「問題文とプログラムを関連付ける」だけで問題が解けるため、
少し内容を考えてみてください。

「b」の正解は、「ウ」の(N-sum % N% Nです。

問題文における[プログラムの説明]
Nから,③で求めた総和をNで割った余りを引く。
さらにその結果を,Nで割り,余りを求める。
求めた数値に対応する文字を検査文字とする。

それぞれマーカーで色づけした部分が、答えに直結しています。

ちなみに問題文をプログラムに当てはめてみると、
①は ・sum ← sum + (value × 2) ÷ N + (value × 2) % N
②は ・sum ← sum + value
③は ①と②の処理において「sum ← sum +」となっている部分
④は 「b」に対しての処理
といった具合になっています。

 

「問題文とプログラムを関連付ける」という作業は、
解答の確実性を上げる、問題を素早く解くといった観点からかなり重要な要素と言えるでしょう。

だからこそ普段の勉強からプログラムを読む練習をして、
スムーズに問題文とプログラムを関連付けられるようにしてください。

 

チョコ
チョコ

問題文とプログラムを繋げる作業は、
アルゴリズムだけに限った話じゃない

シロ
シロ

プログラミング言語や他の長文問題でも使う話だから、
絶対にマスターするようにしてね

チョコ
チョコ

ちなみに以下のページでは、
午後試験でよく出題される、
長文問題を上手く解くためのコツを紹介している

午後試験の長文問題を解くためのポイントと勉強法
基本情報技術者試験の長文問題を苦手にしている人は必見! 長文問題を解くためのポイントと勉強法を解説しました。
シロ
シロ

長文問題に苦手意識がある人は、
是非ともチェックしてみてね

 

・変数を読み取る際は、理解しやすい変数から読み取る

プログラムで使われている変数を理解するのは、
問題を解くのに重要な要素です。

ただプログラムで使われている変数を読み取る際には、
理解しやすい変数から読み取るといった基本的な流れを忘れないようにしましょう。

 

なぜ簡単な変数から読み取るのかというと、
アルゴリズムのプログラムで使われている変数は、
理解しやすい簡単な変数を、処理のベースとして使っているパターンが多いからです。

つまり簡単な変数から難しい処理に利用している変数へ、
順を追って変数を理解すると、プログラムの処理が読みやすくなります

また理解しやすい変数を把握すると、
理解しにくい難しい変数を理解するためのヒントになるため是非とも覚えておいてください。

 

ちなみに理解しやすい変数の見分け方についてですが、
理解しやすい変数は、

・変数の使用回数が少ない
・単純な計算でのみ利用されている
・変数名が分かりやすい

といった特徴があります。

プログラムを読み慣れるまでは、見分けがつきにくいと思いますが、
徐々に見分けがつくようになるため、根気強く勉強を続けてみてください。

 

シロ
シロ

上記の内容を読んだ人の中には、
「要点になる変数だけ読んだら良いじゃん」
と思う人もいるかも知れないね。

チョコ
チョコ

ただアルゴリズムの場合、
全ての変数を読まされるパターンが多いから、
結局読むのが早いか遅いかの違いにしかならないぞ

シロ
シロ

ちなみに簡単な変数が、
問題のカギを握っているパターンもあるから注意してね

スポンサーリンク

 

・理解した内容をメモしておく

アルゴリズムの問題を解く上で

理解した内容をメモしておく

という方法はかなり重要です。

なぜ「理解した内容をメモしておく」という方法が重要かというと、
アルゴリズムという分野では、
プログラムの処理や変数、配列の要素といった内容を逐一追いかける必要があるからです。

 

またアルゴリズムの場合、問題文に選択肢、プログラムとあっちこっちに目を配るため

この変数、どんな内容だったっけ?・・・

なんて状況が発生しやすい分野でもあります。

だからといって、いちいち内容を追い直すのは、ハッキリ言って時間の無駄です。

だからこそアルゴリズムという分野では、
理解した内容や要素があれば、事細かにメモをしておきましょう。

そして内容を振り返る際に、すぐに理解できるようにしておいてください。

 

ちなみにアルゴリズムの問題でメモを取っておいた方が良い内容は、

・変数の内容
・配列の内容
・ループの回数
・プログラムの処理がどのように移動するか?(矢印を書いてみる)

といった内容です。

またループによって変数の内容が更新された場合は、
メモした内容も更新するのを忘れないでください。

 

シロ
シロ

アルゴリズムの問題を素早く解くためには、
メモを取るという方法が非常に重要だよ

チョコ
チョコ

プログラムに使われている変数は、
基本的に英単語を組み合わせたような物が多いからな。
メモをしておかないと、内容を忘れてしまう・・・

シロ
シロ

だからこそ
アルゴリズムのプログラム内で分かったことがあったら、
事細かにメモをする癖をつけておいてね

 

・プログラムをイメージする(流れ図かイラストを作成)

アルゴリズムに書かれているプログラムが全く理解できない!

まずはそんな状況でも焦らず、
プログラムを流れ図やイラストに書き起こしてください。

そしてプログラムがどのような流れになっているか、イメージしてみましょう。

 

プログラムの処理をイメージできるようになると、
問題が理解しやすく、解け易くなるといったメリットがあるため、
アルゴリズムの問題を解く際には必ず意識するようにしてください。

またプログラムにおいて使われている変数や配列を逐一書き出していくと、
プログラムがどのような処理をしているか、
処理をイメージしやすくなるといったメリットもあるため覚えておきましょう。

 

ちなみに1つ1つの要素を書き出していると、
時間が足りないと不安に感じるかも知れませんが、
そこは確実性を取るか、時間を取るかの違いでしかありません。

だからこそ普段の勉強から、

・プログラムをスムーズに読む練習
・試験時間を意識した勉強を心がける

といったポイントを重視して、時間配分を上手くできるようになりましょう。

 

チョコ
チョコ

フローチャートを書くという方法は面倒に感じるんだよな。
実際に丁寧に書いてみると結構時間が掛かるし・・・

シロ
シロ

そう思うのであれば、
フローチャートを簡略化して書いてみると良いよ。
例えばデータと処理を同じ記号で書いてしまうとか、
分岐の処理だけを抜粋してみるとかね

チョコ
チョコ

なるほど。

シロ
シロ

あとはプログラムへの意識の置き方を、
データの定義とかは簡単に読む。
処理の部分は重点的に読むといった方法も
問題を効率的に解くためには重要だね。

チョコ
チョコ

ふむふむ。

シロ
シロ

こういった効率的な方法にたどり着くまでは、
プログラムを読むといった経験が必要不可欠だから、
みんなもプログラムを読む練習だけは欠かさないようにしてね

スポンサーリンク

 

・配列の要素番号と内容に気をつける

アルゴリズムで題材になるプログラムにおいて、
最も注意を払うべき存在、それは配列です。

配列は、基本情報技術者試験で出題されるレベルのプログラムならば、
ほぼ間違いなくプログラムの核となる要素です。

過去に出題されたアルゴリズムの問題でも、
配列が問題になったパターンは物凄く多いため、
最も警戒すべき内容と言えるでしょう。

 

ちなみに配列において注意すべきは、

・配列の要素番号
・配列の内容
・配列の次元数

といったポイントです。

また配列を利用しているプログラムにおいては、
配列の要素番号を指し示す変数も問題になりやすいため、
必ずマークしておいてください。

 

ちなみに配列の問題を効率よく、確実に解くためには、
下記のような形で配列を書き出すのが一番です。

  1      2    3           4           5   要素番号

54826

 

そのため配列を題材とした問題で解答に詰まったら、
まずは配列の内容と要素番号を書き出して、データを当てはめてみてください。

初めの内は面倒に感じるかも知れませんが、
慣れてしまえば、確実性の高い方法として
アルゴリズムにおける強力な武器となってくれるでしょう。

 

シロ
シロ

今回アルゴリズムの配列において、
気をつけるべき点を挙げたけど、
個人的には配列要素の開始番号が、要注意ポイントだと思っているよ

チョコ
チョコ

なんで開始番号なんだ?

シロ
シロ

配列の要素番号の開始番号って、
基本的には”0”が設定されるんだけど、
試験に出題されるプログラムの場合、
”1”が設定されるパターンがあるんだよ

チョコ
チョコ

なるほど。

シロ
シロ

配列においては、
要素番号が1つ違うと処理が大きく違ってくる。
だからこそ要素番号の開始番号については注意した方が良いよ

 

・アルゴリズムで使われている処理は、実は簡単

見出しでも書かれている通り、
アルゴリズムで使われている処理って、実は簡単」なんです。

実際の所、アルゴリズムのプログラムを1つ1つ分解していくと、
難しいロジックや処理は、ほぼありません

強いて難しい処理を挙げるのであれば、再帰や再入といった処理ぐらいです。

そのためアルゴリズムの勉強を始めたばかりの人でも、
時間を掛ければアルゴリズムの問題を解けるようになっています。

 

だからこそ肝に銘じておいてください。

アルゴリズムという分野は、
勉強をキッチリやってきた人ならば、問題は解けます。

だから問題を見た瞬間に、

難しそうだからアルゴリズムは諦めよう・・・

なんて考えを持ってはいけません。

むしろ

問題を読んでみれば、意外に簡単だろう!

ぐらいに思って、ドーンと構えて試験に挑んでください。

 

シロ
シロ

アルゴリズムにおける最大の敵は、
自分自身の心の弱さだと僕は思うよ

チョコ
チョコ

どうしたんだ急にw

シロ
シロ

いやアルゴリズムの問題って、問題をじっくり読み込んでみると、
難しいことはやっていない。
解答を見てみたら、なんだこんな簡単なのか!
なんて状況が多いからね

チョコ
チョコ

なるほどな。
俺もアルゴリズムの問題を解いてみると、よくある状況だ

シロ
シロ

だからこそアルゴリズムでは、
心の強さっていう要素が重要なんだよ。
あとは勉強を続けるのも難しい分野だからね

スポンサーリンク

 

まとめ

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

・始めに問題の全体像をチェックする
・問題文とプログラムを関連付ける

・変数を読み取る際は理解しやすい変数から読み取る
・理解した内容をメモしておく
・プログラムをイメージする(流れ図かイラストを作成)
・配列の要素番号と内容に気をつける
・アルゴリズムで使われている処理は、実は簡単

 

またアルゴリズムの問題を解く際には、
以下のような手順がベースとなるでしょう。

・始めに問題の全体像をチェックする
       ↓
・問題文とプログラムを関連付ける
       ↓
・変数を読み取る際は簡単な変数から読み取る

       ↓
・理解した内容をメモしておく

       or
・プログラムをイメージする(流れ図かイラストを作成)

 

ちなみに今回紹介したアルゴリズムを解くためのコツは、
アルゴリズムの基礎知識や勉強があっての方法です。

だからこそ普段からアルゴリズムの勉強を欠かさずにしてください。

 

ちなみに以下のページでは、
アルゴリズムを解くための勉強について解説しています。

基本情報技術者試験 アルゴリズムを解くための"勉強"について
こちらではアルゴリズムの問題を解くために必要な準備について解説しています。問題自体が難しく、基本情報技術者試験の鬼門とされるアルゴリズムを解くためには、プログラムをどれだけ正しく、たくさん読んできたかというポイントが重要になるでしょう。

アルゴリズムの勉強法をどうしたら良いのか分からない人、
アルゴリズムの勉強に苦戦している人は、是非ともチェックしてみてください。

 

またアルゴリズムの勉強には、
以下のページでレビューしているような、
解説が充実している参考書を利用すると問題が解けない時の心強い味方になってくれます。

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

アルゴリズムの勉強において、

勉強を効率的に進めたいけど、
どんな参考書を選んだら良いか分からない・・・

なんて悩みを持っている人におススメできる参考書です。

コメント