BizLearnLog

BizLearnLog編集部

例題と解説あり【基本情報技術者試験】アルゴリズム問題の勉強方法・解き方を徹底解説!

例題と解説あり【基本情報技術者試験】アルゴリズム問題の勉強方法・解き方を徹底解説!
BizLearnではeラーニング「基本情報技術者試験 合格総合対策コース」を提供しています。
日本の国家資格の一つである情報処理技術者試験。その中でも、IT人材に必要とされる情報処理の基本的な知識・機能・活用能力を試されるのが基本情報技術者試験です。令和4年度春期の試験では受験者数5万人を超え、とても人気のある資格試験です。
アルゴリズムとは、問題を解決するための方法や手順を一般化したものです。プログラミングにおいては、このアルゴリズムを用いてコンピュータに処理方法を指示することになるため、プログラム作成の基礎となるものです。 基本情報技術者試験の試験B(旧午後試験)において、プログラミングとアルゴリズムを扱う問題「プログラミング全般」「データ構造及びアルゴリズム」の分野は試験B(旧午後試験)の8割を占める問題です。合格するためには、とても重要な問題なのですが、苦手とする人が非常に多いという話も耳にします。
本記事ではアルゴリズムとプログラミングの勉強方法や問題を解く際のポイントについて丁寧に解説していきます。受験者にとって役に立つことができれば幸いです。

★LINE友達登録でプレゼント!★

合格のポイントや学習方法が分かる 『基本情報攻略ガイド』 & 今すぐ使える 1,100円OFFクーポン
友だち追加

1.基本情報試験のアルゴリズムとプログラミング問題の種類

「アルゴリズムとプログラミング」の分野は、大きく3つの問題分けられます。
・プログラムの基本要素
・データ構造及びアルゴリズム
・プログラミングの諸分野への適用
以下、解説していきます。

知っていますか?

合格が近づく科目A免除制度

あなたは科目A免除制度について、ご存じでしょうか?
基本情報技術者試験の合格率は基本的に20%~30%の合格率で遷移しています。半分以上が落ちてしまうことから、難易度の高さが伺えるのではないでしょうか。そこで、少しでも合格率を高めるために活用したいのが「科目A免除制度」です。
基本情報技術者試験に合格する為には、知識を問う科目A試験、技能を問う科目B試験の2つの試験に合格する必要があります。科目A免除制度とは、IPAに認定されたeラーニング講座などを事前に受講し、科目A免除修了試験に合格すると、本試験の科目A試験が1年間免除されるという制度です。事前に科目A試験の免除の権利を手に入れておけば、科目B試験に集中することができるので、合格がぐっと近づくこと間違いなしです!

1.1.プログラムの基本要素

型、変数、配列、代入、算術演算、比較演算、論理演算、選択処理、繰返し処理、手続・関数の呼出し などの理解が求められる問題です。
プログラムを穴埋めして完成させる問題は、基礎的な構文の理解があれば、簡単に解くことができるでしょう。しかしながら、うっかりミスが発生しやすいという特性もあります。うっかりミスで合格が遠ざかることがないよう、慎重に答えるようにしましょう。

1.2.データ構造及びアルゴリズム

再帰、スタック、キュー、木構造、グラフ、連結リスト、整列、文字列処理 などの理解が求められる問題です。IPAが公開しているサンプル問題では、オブジェクト指向の構文を取り上げた問題が出題されています。 出題されるプログラムからアルゴリズム読み解くのには、様々なプログラミングの知識が必要とされます。

1.3.プログラミングの諸分野への適用

数理・データサイエンス・AI などの分野を題材としたプログラム などの理解が求められる分野です。IPAが公開しているサンプル問題では、データ構造の変換を題材とした問題が出題されています。これは、データサイエンスにおいて、分析などを行う際にデータ構造の変換を行うケースが多いためです。

1.4.プログラムの基本要素のサンプル問題

それでは、IPAが公開しているサンプル問題と解説を見てみましょう。基本的な構文の理解が問われる、プログラムを穴埋めして完成させる問題です。
BizLearnのeラーニングより

次のプログラム中の     に入れる正しい答えを、解答群の中から選べ。
ある施設の入場料は、0 歳から 3 歳までは 100 円、4 歳から 9 歳までは 300 円、10 歳以上は 500 円である。関数 fee は、年齢を表す 0 以上の整数を引数として受け取り、入場料を返す。
    〔プログラム〕
   ○整数型: fee(整数型: age)
    整数型: ret
    if (age が 3 以下)
     ret ← 100
    elseif (    )
     ret ← 300
    else
     ret ← 500
    endif
    return ret
  
▼解答群
ア (age が 4 以上) and (age が 9 より小さい)
イ (age が 4 と等しい) or (age が 9 と等しい)
ウ (age が 4 より大きい) and (age が 9 以下)
エ age が 4 以上
オ age が 4 より大きい
カ age が 9 以下
キ age が 9 より小さい
正解と解説

Q1. 正解 カ

if 文と else 文による条件判定の問題です。「○整数型: fee(整数型: age)」より、fee は 年齢 age を引数とする関数です。関数内で計算した結果は、「return ret」によって入場料 ret を返しています。 問題文の条件をプログラムに対応させると、変数 ret に100、300、500を代入していることから、プログラムと条件は以下のように対応することがわかります。
解説画像
ここで注意するのは、「から」「まで」「より大きい」「より小さい」という語の解釈です。
数学の不等式では、以下のように表します。等号のつき方に注目してください。

x は4から9まで 4≦ x ≦9
x は4以上 x ≧ 4
x は4より大きい x > 4
x は9以下 x ≦ 9
x は9より小さい x < 9
「4歳から9歳までは 300 円」ですから、空欄には、不等式で表すと「4≦ age ≦9」となる条件が入らなければいけません。ですが、ここに来るのは「elseif」の処理ですから、その前にある「if (age が 3 以下)」が成り立たなかったときだけです。つまり、この処理が実行されるのは「age ≧4」のときだけです。よって、空欄には残りの「age ≦9」となる条件が入ればいいことになります。選択肢の中でこれに該当するのは「カ age が 9 以下」です。「キ age が9 より小さい」は不等式で「age <9」となるので、不適切です。
したがって、正解は「カ」です。

このようにBizLearnのeラーニングは丁寧な解説付きで、基本情報技術者試験に向けての勉強をサポートしてくれます。

知っていますか?

合格が近づく科目A免除制度

あなたは科目A免除制度について、ご存じでしょうか?
基本情報技術者試験の合格率は基本的に20%~30%の合格率で遷移しています。半分以上が落ちてしまうことから、難易度の高さが伺えるのではないでしょうか。そこで、少しでも合格率を高めるために活用したいのが「科目A免除制度」です。
基本情報技術者試験に合格する為には、知識を問う科目A試験、技能を問う科目B試験の2つの試験に合格する必要があります。科目A免除制度とは、IPAに認定されたeラーニング講座などを事前に受講し、科目A免除修了試験に合格すると、本試験の科目A試験が1年間免除されるという制度です。事前に科目A試験の免除の権利を手に入れておけば、科目B試験に集中することができるので、合格がぐっと近づくこと間違いなしです!

2.基本情報試験のアルゴリズムとプログラミング問題の勉強方法

アルゴリズムとプログラミングの問題について、簡単に解答できるようになる特別な方法はありません。しかし、ポイントを押さえて勉強することで、効率よく学ぶことは可能です。以下、そのポイントについて記載します。

2.1.基本的なアルゴリズムとデータ構造を記憶する

テキストなどを用いて基本的なアルゴリズム、データ構造を覚えましょう。試験要綱に記載されている代表的なものは、すべて覚えておくのが無難です。

代表的なアルゴリズム

  • 再帰
  • 木構造
  • 文字列処理
  • 整列

代表的なデータ構造

  • 配列
  • 連結リスト
  • キュー
  • スタック

2.2.疑似言語の読み方を事前に覚えておく

アルゴリズムとプログラミングの問題では、基本情報技術者試験専用の疑似言語でプログラムが表記されます。その仕様については、問題に付属して定義の記載があるものの、試験時にすべてを読んでいては時間が不足してしまう可能性があります。疑似言語は、IPAから出されている資料「試験で使用する情報技術に関する用語・プログラム言語など」で解説がされています。まずは、サンプル問題で疑似言語について慣れていくのもよいでしょう。
例えば、加算を意味する演算子は「+」の記号で表現されるといったルールは基本的に同様ですので、事前に覚えておく事項となります。

2.3.制限時間を設けて過去問を解く

アルゴリズムとプログラミングのサンプル問題に取り組む場合には、実際の試験と同様に制限時間を設けて挑んでみましょう。時間配分から考えると、5分が制限時間の目安となります。ペース配分を考えながら回答することに慣れておく必要があります。なお、BizLearnのeラーニングでは、サンプル問題だけでなく、類似した出題が予想される問題が20題以上用意されています。

3.基本情報試験のアルゴリズムとデータ構造の問題を解く際のポイント

アルゴリズムとデータ構造の問題について、取り掛かりとなる各問題を解く際のポイントを以下に記載していきます。
※2023年4月以前の問題を参考に記載していますが、基本的な考え方には変更がないと考えています。

3.1.設問と選択肢をすぐに見る

まず、問題に取り掛かる際には、設問と選択肢をざっと見ましょう。アルゴリズムとデータ構造の問題全体の構成を確認します。さらに問題を読み進める前に、設問と選択肢から答えを得るために必要なことを読み取り、それを見つけられるようにプログラムの説明とプログラムを見ることで効率的に問題に取り組むことができます。

3.2.プログラムの説明に具体例が示されている場合、想定して読む

プログラムの説明に具体例が示されている場合、出題者がヒントとして具体例を示しています。このヒントを有効活用して問題に取り組みましょう。例に従って、具体的な値を挿入してみるとプログラムが理解しやすくなります。また具体例について値の設定前/設定後の例を自分で出してみて、問題を解くのも解答を導き出すのには有効です。

3.3.プログラムを読む際はプログラムの説明と関連づけて読む

問題内の疑似言語によるプログラムとプログラムの説明は、一対になって出題されています。プログラムの説明と関連付けてプログラムを読んでいくことで、プログラムへの理解度が高まります。また、それだけで解けるような問題が出題される場合もあります。

3.4.理解しやすい変数から読み取る

プログラムを読み、回答を導き出す際には、理解しやすい変数から追いかけていくのがオススメです。段階を追って解いていく際には、簡単な変数を難しい変数を理解するためのヒントとして読んでみてください。

3.5.問題を解きながらメモを取る

データ構造及びアルゴリズムの問題では、プログラムの処理や変数、配列の要素といった内容をひとつずつ追いかけ、プログラムの処理をトレースすることが必要となります。特に処理結果を求める問題ではトレースは必須です。その際には、理解した内容や変数、配列の要素などについてメモを取っておき、後から振り返ることができるようにしておくと、回答を導き出すのに利用できます。メモを取っておいた方が良い内容としては、変数、配列要素、データ構造内のデータなど、プログラムの処理が進むたびに内容が変わっていく値がターゲットとなります。可能であれば、状況の変化によりどのように値が変わっていったかをメモにしておくと、後から再度プログラムを読み、課題を解く際に有用です。

3.6.配列の要素番号と内容に注意する

データ構造の中でも、基本的な構造のため出題率の高いのが配列を利用した問題です。配列において注意すべきポイントとして、要素番号と紐づけて値が保持されていることです。プログラム上では要素番号に変数をあてることで、配列の各要素の読み出し、書き換えを行うため、要素番号に利用される変数をきちんと見定めておく必要があります。また、配列の内容と要素番号を書き出し、メモを取っておくと、効率よく確実に解答に近づけるようになります。

4.まとめ

基本情報技術者試験のB試験(旧午後試験)において、アルゴリズムとプログラミングの問題は8割と大きな割合を占めています。きちんと対策を取って、点数を取っておきたい問題です。その問題形式はプログラムやその説明文の穴埋め問題とプログラムの実行結果を求める問題が多いと想定されており、プログラムの読解力とプログラムの動きのトレースをする能力が回答には必要です。 さらには、アルゴリズムとデータ構造の代表的なものを覚えること、疑似言語について読み方を知っておくこと、メモを取りながら実際に問題を解いていくことなど対策としてやらなくてはいけないことは少なくありません。
基本情報技術者試験のB試験(旧午後試験)のアルゴリズムとプログラミングの対策として有効なものの一つに、eラーニングを利用する勉強方法があります。豊富な予想問題とわかりやすい解説、時間を計る機能など、データ構造及びアルゴリズムの問題を解くサポートをしてくれます。
当社のeラーニング「基本情報技術者試験 合格総合対策コース」は、効率的な学習で受講者の合格をサポートします。蓄積されていく個人ごとの練習問題の正誤結果により、間違いの多い分野の分析が容易になるため、自身の弱点に特化して対策を行えます。また、チュータ担任制度もあり、チュータが質問に回答してくれる仕組みとなっているため、難しい問題でつまってしまっても質問することでスムーズに解決をすることができます。また合格ナビゲーション付きのコースでは、どのようなペースで勉強していけばよいのか、モデルケースを示し、継続的なスケジュールに沿った勉強のサポートもしてくれます。もちろん、科目A試験免除制度にも対応しています。

知っていますか?

合格が近づく科目A免除制度

あなたは科目A免除制度について、ご存じでしょうか?
基本情報技術者試験の合格率は基本的に40%~50%の合格率で遷移しています。半分以上が落ちてしまうことから、難易度の高さが伺えるのではないでしょうか。そこで、少しでも合格率を高めるために活用したいのが「科目A免除制度」です。
基本情報技術者試験に合格する為には、知識を問う科目A試験、技能を問う科目B試験の2つの試験に合格する必要があります。科目A免除制度とは、IPAに認定されたeラーニング講座などを事前に受講し、科目A免除修了試験に合格すると、本試験の科目A試験が1年間免除されるという制度です。事前に科目A試験の免除の権利を手に入れておけば、科目B試験に集中することができるので、合格がぐっと近づくこと間違いなしです!

基本情報技術者試験・プロジェクトマネジメントなどビジネスに役立つ記事を公開中!

ロゴ:BizLearn

BizLearnLog編集部

PMP(R)や基本情報技術者試験に関する役立つ情報などを配信中!
BizLearn では自社開発のビジネススキルに役立つ講座を販売しております。