見出し画像

基本情報技術者試験:科目B対策まとめ【最新版】

試験を受けてみて、知っておきたかったことをまとめました。これから基本情報を受験される方の参考になれば幸いです!

以下の情報をまとめています。
✔︎科目Bに関する情報
✔︎練習問題のリンク一覧(サンプル問題ほか)
✔︎基本的なアルゴリズム
✔︎アルゴリズムに関連する基礎知識
✔︎変数名に使用される英単語やその略称の一覧
✔︎おすすめの解説動画・Webサイト


科目Bの概要

科目Bではアルゴリズム(16問)とセキュリティ(4問)の計20問が出題されます。制限時間は100分です。

アルゴリズム

アルゴリズム(16問)は擬似言語で書かれたプログラムを踏まえて設問に答える問題です。様々なアルゴリズムが登場します。設問では、「プログラム中の空欄を埋める問題」や「ある関数や手続きの実行結果を問う問題」が出題されます。

セキュリティ

セキュリティ(4問)では、情報セキュリティを確保するための知識が問われます。例えば、「アクセス権限の適切な設定方法」や「職務分掌」などです。ただし、実質的に読解問題となっています。科目Aの基本的なセキュリティ知識があれば解けます。特別対策する必要はありません。

【補足】基本情報技術者試験は2023年4月から通年受験へと変更されました(CBT方式)。この変更によって「午後試験」は「科目B」にリニューアルし、出題される内容も大幅に改訂されました。そのため、午後試験の過去問を解いてもあまり意味はありません。

科目Bの勉強方法

科目Bで重要なのはトレースです。
トレースとはプログラムを1行1行追っていく作業のことです。変数の値の変化をしっかり押さえる必要があります。

トレース表の例(出典:オリジナルの問題

科目Bは基本的にトレースさえできれば解けるようになっています。ただし、アルゴリズムを理解していれば解く時間を節約できることがあります。そのため、基本的なアルゴリズムをあらかじめ押さえておくことが大切です。

①アルゴリズムを押さえる
②問題を繰り返し解いてトレースに慣れる

この2点をマスターすればOKです!

【📕科目B対策に参考書は必要?】

→必要ではありません。科目Aに加えて新たにもう1冊参考書をやるのは負担が多いと思います。科目Aで基本的なアルゴリズムを理解したのち、以下の練習問題を繰り返し解けば十分だと思います。

科目Bの練習問題

科目Bが導入されてからは過去問がそのまま公開されることは無くなりました。そのため、練習問題が不足しています。そこで、以下のサンプル問題と過去問の抜粋を解くことをお勧めします(計47問)。

公式サンプル問題①(全6問)

問題冊子&解答例のPDF
参照先:https://www.ipa.go.jp/shiken/syllabus/henkou/2022/20220425.html

公式サンプル問題②(全20問/100分)

問題冊子のPDF
解答例のPDF
参照先:https://www.ipa.go.jp/shiken/syllabus/henkou/2022/20221226.html

公式令和5年過去問抜粋①(全6問)

問題冊子のPDF
解答例のPDF
参照先:https://www.ipa.go.jp/shiken/mondai-kaiotu/sg_fe/koukai/2023r05.html

Youtubeの解説動画(全10問)

これは「エンジニア養成コーチ:IT学校さいとうさん」様のチャンネルの動画です。(https://youtube.com/@itgakko

科目Bに準拠したオリジナルの問題を公開・解説されています。非常に勉強になるのでお勧めです。私もこの方の問題を繰り返し解きました。

(個人的な感想として、第9問と第10問は難しいので解けなくても問題ないと思います。また、本番よりもやや難しめに作られているため、トレースに時間がかかったとしてもあまり気にする必要はないと思います。)

オリジナル問題(全5問)

せっかくなので私も5問作成してみました。
もし良ければ解いて見てください!

各練習問題を解く順番として、サンプル問題(20問/100分)を最後に解くのがオススメです。本番と同じ問題量・制限時間を体験できるのはこれが唯一だからです。他は好きな順番で良いと思います。

練習を解く前に

練習問題は大変貴重なため、準備不足の段階で解いてしまうのは勿体無いです。そのため、まずは以下のアルゴリズム・基礎知識を理解した上で取り組むことをお勧めします。

基本的なアルゴリズム

以下のアルゴリズムを押さえておく必要があります。科目Aの範囲でもあります。なお、アルゴリズムについて詳しく解説されている方のリンクをつけさせていただいております。

・基本交換法(バブルソート)
・基本選択法(選択ソート)
・基本挿入法(挿入ソート)
・改良挿入法(シェルソート)
・クイックソート【アルゴリズム例:こちら
・マージソート【アルゴリズム例:こちら
・ヒープソート【アルゴリズム例:こちらこちら
・線形探索法
・2分探索法

基礎知識+α

ざっと思いつく範囲でまとめました。
忘れてしまった方は参考にしてください。

①素数
素数は1とその数以外に正の約数を持たない2以上の自然数のことです。例えば、2, 3, 5, 7などがあります。

②約数
約数はある数を割り切ることができる数のことです。例えば、6の約数は1, 2, 3, 6です。

③倍数
倍数はある数を整数倍した数のことです。例えば、3の倍数には3, 6, 9, 12などがあります。

③階乗
階乗は、1からその数までの全ての自然数の積です。記号でn!と表され、例えば5! = 5 × 4 × 3 × 2 × 1 = 120となります。階乗の求め方は、対象となる数から1まで順に掛け算を行います。

④ルート(√)
ルートは平方根を表す記号です。√aと表記した場合、これはある数の2乗がaに等しくなるような数のことです。例えば√9 = 3です。また、指数での表記を用いると、平方根はa^1/2 (=aの1/2乗)と表されます。

⑤ユークリッドの互除法
ユークリッドの互除法は、2つの自然数(または整数)の最大公約数(GCD)を求めるアルゴリズムです。この方法では、大きい数を小さい数で割り、その次に小さい数を余りで割ることを余りが0になるまで繰り返します。最後に割った数が最大公約数になります。例えば、252と105のGCDを求めるには、252を105で割り、余り147を得ます。次に105を147で割り、余り105を得ます。最後に147を105で割り、余り42を得ます。105を42で割り、余りが0になるので、42がGCDです。
なお、引き算の繰り返しによっても求めることができます過去問(科目A)でそのアルゴリズムが出題されていますので気になる方は確認してみてください。

⑥うるう年の求め方
うるう年は、グレゴリオ暦において「4で割り切れる年」かつ「100で割り切れない年」です。ただし、「400で割り切れる年」はうるう年です。うるう年では2月に29日があります。例えば、2020年は4でのみ割り切れるためうるう年です。1900年は4だけでなく100でも割り切れるためうるう年ではありませんが、2000年は400で割り切れるためうるう年です。

⑦単利と複利
単利と複利は、投資や貯蓄における利息の計算方法に関する概念です。
単利は元本にのみ利息が発生します。計算式は将来価値=元本×(1+利率×時間)です。元本に比例して増加します。

aは元本の100万円、rは利子率の0.03、nは年数

複利は元本とそれまでに発生した利息にも利息が発生します。計算式は将来価値=元本×(1+利率)^時間です。時間が経つにつれて利益が指数関数的に増加します。

aは元本の100万円、rは利子率の0.03、nは年数

オブジェクト指向の理解

オブジェクト指向もしっかり理解する必要があります。勉強するにあたっては以下の動画が非常に分かりやすいです。模擬問題を解く前に視聴されることをお勧めします。

「【基本情報技術者試験YouTuber】すーさん」様の動画です。
https://youtube.com/@kihonzyouhou

この方の動画のおかげでオブジェクト指向を理解できました。他の動画もわかりやすくて勉強になるのでお勧めです。
noteのアカウントはこちらです。

変数で使用される英単語・略語

変数などで使用される英単語の意味を押さえておくとアルゴリズムを理解しやすいです。

代表的な英単語や略語を以下に書いておきます。

int:「整数」(integerは整数)
str:「文字列」(stringは文字列)
pivot:「基準値」
temp:「一時保存用」(temporaryは一時的)
tail:「最後」(tailはしっぽ)
pow:「累乗」(powerは累乗)
sum:「合計」
count:「数・数える」
curr:「今」(currentは現在)
prev:「前」(previousは以前)

科目Bの解く順番・時間配分

セキュリティから解くことをおすすめします。

セキュリティは全4問で簡単な問題が多いからです。最初の10〜15分で回答することを目安にすると良いと思います。

アルゴリズムに関しては、簡単な問題は1〜3分で、標準問題は5分で、難問は7〜10分を目安に解くといいと思います。なお、後半の問題の方が難易度が高い傾向があります。

難問は後回しにするのがセオリーです。見掛け倒しの問題もありますが、問題文が長い場合やプログラムが複雑な場合は飛ばすのが無難です。

【補足】
科目Bでは20問のうち1問はダミー問題です。ダミー問題は今後の問題作成の参考にするために設けられた問題であり、採点対象ではありません
したがって、アルゴリズムの難問が出題された場合、ダミー問題である可能性があります。やはり難問は後回しにするのが賢明です。

試験を受ける際の注意点

会場の枠が埋まる可能性があるため、早めに受験予約することをお勧めします。

本人確認書を持っていく必要があります。

科目Aの前にボールペンとA4の計算用紙1枚が配布されます。科目Aが終わったタイミングで計算用紙が回収され、新しい計算用紙が配布されます。また、休憩時間が最大10分あります。
計算用紙が足りなくなった場合はスタッフの方から追加でもらうことができます。

試験終了と同時にパソコン上に評価点が表示されます。科目A・科目Bともに600点を超えていれば合格です。2〜3時間後にスコアをWebサイトでも確認することができます。

1回受験すると30日間は再受験できないという制限があります。

詳細は公式ページをご確認ください。

おまけ:最新の合格率推移(2023年4月~2024年1月)

(https://www.ipa.go.jp/shiken/reports/toukei_fe.htmlより作成)

受験した感想

「文系」「プログラミング経験わずか」という状態でしたが無事合格できました。効率重視で合計50~60時間勉強しました。使用した参考書は「栢木先生の基本情報技術者教室」です。説明が分かりやすく、取り組みやすかったためおすすめです。参考書に掲載されている過去問も良問だと思います。参考書を極めれば、過去問道場をたくさん解かなくても良い気もします。

個人的には科目Bのアルゴリズムが大変でしたが、サンプル問題とYoutubeの解説動画のおかげで合格できました。投稿者の方々ありがとうございました。無料で高質な教材にたどり着けて素晴らしい時代です。

受験されるみなさん、頑張ってください!
陰ながら応援しています。

この記事が気に入ったらサポートをしてみませんか?